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】:有很多方法可以解决这个问题:
将like
、ilike
和/或SIMILAR TO
与|| 一起使用。要处理列,例如:
WHERE col1 ilike '%' || col2 || '%';
使用职位作为 NPE 的答案
您也可以使用regexp_matches
,但这更复杂。
【讨论】:
在这种情况下也可以使用col1 ~ 'abc'
或col1 ~ col2
。
我发现~的表现比LIKE (YMMV)好很多
~
实际上是一个正则表达式。 like的别名是~~
以上是关于Postgresql 包含在 where 子句中的主要内容,如果未能解决你的问题,请参考以下文章
在 PostgreSQL 的 WHERE 子句中使用函数结果