postgreSQL -- регистронезависимый поиск подстроки в строке

Forums:

Для реализации поиска совпадений в PostgreSQL используется служебное слово LIKE.

  • Поиск по полю name будет выглядеть так:

    SELECT * FROM table WHERE name LIKE 'строка';

    Кроме того, в PostgreSQL есть оператор ~~, равнозначный LIKE:

    SELECT * FROM table WHERE name ~~ 'строка';
  • Регистронезависимый поиск:

    SELECT * FROM table WHERE name ILIKE 'строка';

    И аналогичный оператор ~~*:

    SELECT * FROM table WHERE name ~~* 'строка';
  • Поиск всех строк, в которых нет выражения:

    SELECT * FROM table WHERE name NOT LIKE 'строка';

    или так:

    SELECT * FROM table WHERE NOT (name LIKE 'строка');
  • Поиск всех строк, где выражение является подстрокой

    (если вам нужно найти последовательность символов где-то в середине строки):

    SELECT * FROM table WHERE name LIKE '%строка%';

    Знак % обозначает любую (в том числе и пустую) последовательность символов. Может находиться и с одной и с двух сторон.
    Знак _ обозначает один любой символ.

Примеры

Источники

https://postgrespro.ru/docs/postgrespro/...