2013-03-13 5 views
9

Есть функция в postgres, как contains? который можно использовать в where clause, чтобы проверить, содержится ли строка в столбце?Postgresql Содержит в том, где статья

+1

Вы имеете в виду 'LIKE '% abc%'' в SQL Server? – hims056

+0

Да. Я знаю об использовании подобных и похожих. Но только статический текст может быть передан как/ilike. Мне нужно использовать что-то вроде col1 ilike% col2%. Где col1 и col2 - значения столбцов. –

ответ

7

Есть множество способов решения этой:

  1. Использование like, ilike и/или SIMILAR TO вместе с ||. Для обработки столбцов, что-то вроде:

    WHERE col1 ilike '%' || col2 || '%'; 
    
  2. Использование позиции в качестве ответа НЭП

  3. Вы также можете использовать regexp_matches, но это сложнее.

+4

В этом случае можно использовать 'col1 ~ 'abc'' или' col1 ~ col2'. – vyegorov

+0

Я нахожу, что производительность ~ намного лучше, чем LIKE (YMMV) –

+0

'~' на самом деле является REGEXP. Псевдоним типа «~~' – mauhiz

16

Для этого вы можете использовать position(). Она возвращает ноль, если подстрока не найдена:

position(col2 in col1) <> 0 
Смежные вопросы