Postgresql 包含在 where 子句中

Posted

技术标签:

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

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

【问题讨论】:

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

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

position(col2 in col1) <> 0

【讨论】:

【参考方案2】:

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

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

    WHERE col1 ilike '%' || col2 || '%';
    

    使用职位作为 NPE 的答案

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

【讨论】:

在这种情况下也可以使用col1 ~ 'abc'col1 ~ col2 我发现~的表现比LIKE (YMMV)好很多 ~ 实际上是一个正则表达式。 like的别名是~~

以上是关于Postgresql 包含在 where 子句中的主要内容,如果未能解决你的问题,请参考以下文章

在 PostgreSQL 的 WHERE 子句中使用函数结果

PostgreSQL WHERE 子句

PostgreSQL WHERE 子句

PostgreSQL:在 WHERE 子句中搜索时列不存在

在 postgreSQL 中使用 WHERE 子句创建三个表的最有效方法是啥

postgresql 在 where 子句中使用 json 子元素