Наиболее универсальный способ — это оператор LIKE, поддерживаемый всеми крупными SQL базами данных. Он использует два подстановочных символа:
% — совпадает с любой последовательностью из нуля или более символов_ — совпадает с ровно одним символомSELECT * FROM users WHERE name LIKE 'J%'; -- starts with J
SELECT * FROM users WHERE code LIKE 'A_C'; -- A, any char, C
По умолчанию LIKE чувствителен к регистру в большинстве баз данных. Чтобы реализовать поиск без учёта регистра:
ILIKE как прямую альтернативу LIKELOWER() или UPPER()Для более сложных паттернов базы данных предлагают расширенные возможности:
SIMILAR TO, который объединяет синтаксис SQL-паттернов с возможностями регулярных выражений, а также операторы ~ (с учётом регистра) и ~* (без учёта регистра)REGEXP или REGEXP_LIKE() для полноценной поддержки регулярных выражений-- PostgreSQL regex
SELECT * FROM users WHERE name ~ '^J[aeiou]';
-- MySQL regex
SELECT * FROM users WHERE name REGEXP '^J[aeiou]';
ILIKE специфичен для PostgreSQL; в других системах прямого эквивалента нетSIMILAR TO уникален для PostgreSQL и на практике используется редкоREGEXP, тогда как PostgreSQL — операторы ~LIKE, и стоит прибегать к нему только тогда, когда простых паттернов недостаточноПодстановочный символ % в SQL оператор LIKE совпадает с любой последовательностью нулевого или большего количества символов, а _ совпадает ровно с одним символом.
Новый — ещё не проверен сообществом
Вы