Подтвердить что ты не робот

Как использовать условие SQL LIKE с несколькими значениями в PostgreSQL?

Есть ли более короткий способ поиска нескольких совпадений:

 SELECT * 
 from table 
 WHERE column LIKE "AAA%" 
    OR column LIKE "BBB%" 
    OR column LIKE "CCC%"

Эти вопросы относятся к PostgreSQL 9.1, но если есть общее решение, это будет еще лучше.

4b9b3361

Ответ 1

Возможно, использование SIMILAR TO будет работать?

SELECT * from table WHERE column SIMILAR TO '(AAA|BBB|CCC)%';

Ответ 2

Использование массива или набор сравнений:

create table t (str text);
insert into t values ('AAA'), ('BBB'), ('DDD999YYY'), ('DDD099YYY');

select str from t
where str like any ('{"AAA%", "BBB%", "CCC%"}');

select str from t
where str like any (values('AAA%'), ('BBB%'), ('CCC%'));

Также возможно сделать AND, что было бы нелегко с регулярным выражением, если бы оно соответствовало любому порядку:

select str from t
where str like all ('{"%999%", "DDD%"}');

select str from t
where str like all (values('%999%'), ('DDD%'));

Ответ 4

Вы можете использовать оператор регулярного выражения (~), разделенный (|), как описано в Pattern Matching

select column_a from table where column_a ~* 'aaa|bbb|ccc'

Ответ 5

Следующий запрос помог мне. Вместо использования LIKE вы можете использовать ~*.

select id, name from hosts where name ~* 'julia|lena|jack';

Ответ 6

Вы можете использовать IN, если вам на самом деле не нужны символы подстановки.

ВЫБРАТЬ * из таблицы ГДЕ столбец IN ("AAA", "BBB", "CCC")

Ответ 7

SELECT * FROM TableName WHERE ColumnName LIKE '% Test%' ИЛИ ​​ColumnName LIKE '% Test2%'