Postgresql包含在哪里条款

问题描述:

在postgres中是否有一个函数,如contains?可以用where clause来检查,传递的字符串是否包含在列中?Postgresql包含在哪里条款

+1

你的意思是'LIKE'%abc%''在SQL Server中? – hims056 2013-03-13 06:15:19

+0

是的。我知道使用像和ilike。但只有静态文本可以传递给like/ilike。我需要使用像col1 ilike%col2%之类的东西。 col1和col2是列值。 – 2013-03-13 06:18:54

还有一堆的解决这个办法:

  1. 使用likeilike,和/或SIMILAR TO随着||。为了处理列,是这样的:

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

  3. 你也可以使用regexp_matches但是这是比较复杂的。

+4

对于这种情况,也可以使用col1〜'abc'或'col1〜col2'。 – vyegorov 2013-03-13 10:19:35

+0

我发现〜的性能比LIKE好得多(YMMV) – 2014-03-13 20:06:29

+0

'〜'实际上是一个REGEXP。 like的别名是'~~' – mauhiz 2014-10-06 06:52:54

你可以使用position()。它返回零,如果子没有找到:

position(col2 in col1) <> 0