【问题标题】:ILIKE Match Word Boundaries PostgreSQL 9ILIKE 匹配词边界 PostgreSQL 9
【发布时间】:2013-08-07 10:55:38
【问题描述】:

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

例如

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

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

谢谢,

标记

【问题讨论】:

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


    【解决方案1】:

    你可以通过以下技巧做到这一点:

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

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

    【讨论】:

      【解决方案2】:

      这对我有帮助:

      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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-08-22
        • 1970-01-01
        • 1970-01-01
        • 2022-07-06
        • 2014-12-04
        相关资源
        最近更新 更多