当的PostgreSQL 9使用LIKE / ILIKE操作者是有可能匹配字边界,而不必使用完全成熟〜操作正则表达式?
例如
SELECT 'Super fast training' ILIKE '%train\M%' as match;
其中\ M是在单词的末尾边界和匹配返回false
谢谢,
标记
当的PostgreSQL 9使用LIKE / ILIKE操作者是有可能匹配字边界,而不必使用完全成熟〜操作正则表达式?
例如
SELECT 'Super fast training' ILIKE '%train\M%' as match;
其中\ M是在单词的末尾边界和匹配返回false
谢谢,
标记
你可以用下面的技巧做:
SELECT ' ' || 'Super fast training' ILIKE '%train %'
但我不hink所以这是一个好主意。 您可以使用正则表达式或PostgreSQL全文代替。 PostgreSQL的正则表达式是不显著比ILIKE或喜欢慢一些。
它有助于我的情况:
WITH phrase_to_match AS (
SELECT 'Super fast training' AS phrase
UNION ALL
SELECT 'Super fast train' AS phrase
)
SELECT ' ' || phrase || ' ' ILIKE '% train %'
FROM phrase_to_match
在空间开始,词组和短语匹配的结束是必要的。 它没有不带空格正常工作。
这个例子的作品比,当我们使用更快的~*
运营商。
PS:感谢对https://stackoverflow.com/a/29798772/2997850