【问题标题】:Postgresql Contains in where clausePostgresql 包含在 where 子句中
【发布时间】:2013-02-28 23:15:09
【问题描述】:

postgres 中是否有类似 contains 的功能?可以在where clause 中使用来检查传递的字符串是否包含在列中?

【问题讨论】:

  • 您的意思是 SQL Server 中的LIKE '%abc%'
  • 是的。我知道使用like 和ilike。但是只有静态文本可以传递给like/ilike。我需要使用像 col1 ilike %col2% 这样的东西。其中 col1 和 col2 是列值。

标签: sql postgresql select where-clause contains


【解决方案1】:

您可以为此使用position()。如果未找到子字符串,则返回零:

position(col2 in col1) <> 0

【讨论】:

    【解决方案2】:

    有很多方法可以解决这个问题:

    1. likeilike 和/或SIMILAR TO 与|| 一起使用。要处理列,例如:

      WHERE col1 ilike '%' || col2 || '%';
      
    2. 使用职位作为 NPE 的答案

    3. 您也可以使用regexp_matches,但这更复杂。

    【讨论】:

    • 在这种情况下也可以使用col1 ~ 'abc'col1 ~ col2
    • 我发现~的表现比LIKE (YMMV)好很多
    • ~ 实际上是一个正则表达式。 like的别名是~~
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-06
    • 2012-06-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多