ILIKE匹配Word边界PostgreSQL 9

时间:2013-08-06 12:24:48

标签: sql postgresql full-text-search postgresql-9.1 postgresql-9.0

在PostgreSQL 9中使用LIKE / ILIKE运算符时,是否可以匹配字边界而无需使用完整的〜运算符正则表达式?

例如

SELECT 'Super fast training' ILIKE '%train\M%' as match; 

其中\ M是单词末尾的边界,匹配返回 false

谢谢,

标记

2 个答案:

答案 0 :(得分:1)

你可以通过以下技巧来实现:

SELECT ' ' || 'Super fast training' ILIKE '%train %'

但我不会这么做,所以这是一个好主意。您可以使用正则表达式或PostgreSQL全文。 PostgreSQL正则表达式并不比ILIKE或LIKE慢得多。

答案 1 :(得分:0)

在我的案例中有所帮助:

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

短语和匹配短语的开头和结尾的空格是必要的。没有空格,它无法正常工作。

此示例比我们使用~*运算符时更快。

P.S。:感谢https://stackoverflow.com/a/29798772/2997850