可能可能
PostgreSQL的正则表达式表示为字符串(text
DataType(,
SELECT regexp_matches('foobarbequebaz', '(bar)(beque)'::text);
所以很自然地想象它是一个动态参数...但是不,不可能动态...此查询"未能从未知到文本中找到转换函数" ,
SELECT regexp_matches('foobarbequebaz', (SELECT '(bar)(beque)') );
...因此,我们可以想象重复使用正则表达式的中介,作为预编译。PostgreSQL V10?
错误消息与"动态"值或"预编译"值无关。它只是告诉您(SELECT '(bar)(beque)')
的结果具有未知的数据类型,但是regexp_matches()
期望text
因此,您需要将结果施放给文本:
SELECT regexp_matches('foobarbequebaz', (SELECT '(bar)(beque)')::text );
如果您想通过其他地方传递表达式,则可以这样做:
with list_of_expressions (expression) as (
values
('(bar)(beque)'),
('(foo)')
)
SELECT regexp_matches('foobarbequebaz', expression)
from list_of_expressions;
当然list_of_expressions
也可能是您数据库中的表格。