2

在 PostgreSQL 9 中使用 LIKE/ILIKE 运算符时,是否可以匹配单词边界而不必使用完整的 ~ 运算符正则表达式?

例如

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

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

谢谢,

标记

4

2 回答 2

1

你可以用以下技巧来做到这一点:

选择“”|| '超快速训练' ILIKE '%train %'

但我不认为这是个好主意。您可以改用正则表达式或 PostgreSQL 全文。PostgreSQL 正则表达式并不比 ILIKE 或 LIKE 慢很多。

于 2013-08-06T14:51:42.747 回答
1

在我的情况下它有帮助:

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

于 2017-11-05T10:04:04.603 回答