gpt4 book ai didi

regex - 如何预编译正则表达式?

转载 作者:行者123 更新时间:2023-11-29 12:02:35 42 4
gpt4 key购买 nike

PostgreSQL 的正则表达式表示为字符串(text 数据类型),

SELECT regexp_matches('foobarbequebaz', '(bar)(beque)'::text);

所以很自然地把它想象成一个动态参数......但是不,不可能是动态的......这个查询“未能找到从未知到文本的转换函数”

SELECT regexp_matches('foobarbequebaz', (SELECT '(bar)(beque)') );

...所以,我们可以想象一些中介来重用正则表达式,如pre-compile it . 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 也可以是您数据库中的一个表。

关于regex - 如何预编译正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48951084/

42 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com