В PostgreSQL как совместить NOT IN и LIKE?
Как вы сочетаете NOT IN
а также LIKE
?
Давайте предположим, что у нас есть таблица, которая содержит столбец имен (что-то вроде "голубой сыр", "сыр гауда" и т. Д.), И я хочу выбрать все имена, которые не содержат "сыр", "молоко", " мясо'.
Насколько я понимаю, искать что-то, что не находится в массиве строк, которые вы используете NOT IN
и передать струны
SELECT names FROM some_table NOT IN('cheese','milk','meat');
но как пройти
LIKE '%cheese%'
к этому?
1 ответ
Решение
Конструкция LIKE ANY (ARRAY[...])
кажется, чтобы удовлетворить ваши потребности;
craig=> SELECT a FROM (
VALUES ('cheesy'), ('imilk'), ('donut'), ('pie'), ('avocado'), ('meaty')
) x(a)
WHERE NOT a LIKE ANY (ARRAY['%cheese%','%milk%','%meat%']);
a
---------
cheesy
donut
pie
avocado
(4 rows)
Вам нужны символы подстановки, если вы хотите использовать LIKE
сюда. Если вы действительно хотите равенства, вы можете использовать:
NOT = ANY (...)