#sql #postgresql
#sql #postgresql
Вопрос:
Как и в title, следующий код вообще ничего не фильтрует, он возвращает все строки, в то время как без ‘NOT’ он работает просто отлично. В чем проблема?
create table test (value text);
insert into test values
('Test1'),
('foo'),
('bar'),
('foobar'),
('foobar2'),
('foobar3'),
('foo1bar'),
('foo bar'),
('barbar');
select *
FROM test
WHERE value NOT like any (array['%foo%', '%foo bar%', '%xx%'])
Комментарии:
1. Если вы используете
like any
, я не вижу'Test1'
, поэтому я не понимаю вашего вопроса.2. Черт, я пропустил ‘NOT’ в коде здесь.
Ответ №1:
Я предполагаю, что вы имеете not like any
в виду, что это не работает. И я думаю, это потому, что вы хотите not like all
:
SELECT *
FROM test
WHERE value like all (array['%foo%', '%foo bar%', '%xx%'])
Вот скрипка db<> .
Комментарии:
1. Да, «все» вместо any решило это, спасибо