2013-03-13 72 views
9

在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

回答

7

還有一堆的解決這個辦法:

  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

16

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

position(col2 in col1) <> 0