Подстановочный знак (wildcard) в SQL используется с оператором LIKE для замены одного или набора символов в строке. Например:
1 2 3 |
SELECT * FROM Customers WHERE last_name LIKE 'R%'; |
Здесь %
(означает ноль или более символов) является подстановочным знаком (wildcard). Мы выбираем клиентов, чья фамилия (last_name) начинается с буквы R, за которой следует ноль или более символов.
Подстановочный знак % в SQL
Подстановочный знак % используется для представления нуля или более символов. Например:
1 2 3 |
SELECT * FROM Customers WHERE last_name LIKE 'R%'; |
Здесь мы выбираем клиентов, чья фамилия (last_name) начинается с буквы R, за которой следует ноль или более символов.
Шаблон | Строка | Соответствует? |
R% | R | соответствует |
Run | соответствует | |
Mere | не соответствует | |
Summer | не соответствует |
Подстановочный знак _ в SQL
Подстановочный знак _ используется для представления ровно одного символа в строке. Например:
1 2 3 |
SELECT * FROM Customers WHERE country LIKE 'U_'; |
Здесь мы выбираем клиентов, название страны (country) которых начинается с буквы U и сопровождается только одним символом.
Шаблон | Строка | Соответствует? |
U_ | U | не соответствует |
UK | соответствует | |
USA | не соответствует |
Подстановочный знак [] в SQL
Подстановочный знак [] используется для представления одного любого из указанных в квадратных скобках символа. В скобках можно указать сразу несколько символов, но выбираться будет только один из этих символов. Например:
1 2 3 |
SELECT * FROM Customers WHERE country LIKE 'U[KA]%'; |
Здесь мы выбираем клиентов, название страны (country) которых начинается с буквы U, а вторая буква либо K, либо A — что-то одно. После второй буквы из заданного шаблона допускается любое количество символов.
Шаблон | Строка | Соответствует? |
U[KA]% | U | не соответствует |
UK | соответствует | |
UAE | соответствует | |
USA | не соответствует |
Подстановочный знак ! в SQL
Подстановочный знак ! используется для исключения символов из строки. Например:
1 2 3 |
SELECT * FROM Customers WHERE last_name LIKE '[!DR]%'; |
Здесь мы выбираем клиентов, чья фамилия (last_name) НЕ начинается с буквы D или R.
Шаблон | Строка | Соответствует? |
[!DR]% | Doe | не соответствует |
Reinhardt | не соответствует | |
Luna | соответствует | |
D | не соответствует | |
O | соответствует | |
R | не соответствует |
Подстановочные знаки в разных СУБД
Разные СУБД имеют разные наборы подстановочных знаков. Рассмотрим некоторые из них.
Подстановочные знаки в SQL Server:
%
— ноль или более символов;
_
— одиночный символ;
[]
— одиночный символ из символов, указанных в скобках (можно указать несколько);
^
— любой символ, кроме тех, что указаны в скобках;
-
— один символ в пределах заданного диапазона символов.
Подстановочные знаки в PostgreSQL и MySQL:
%
— ноль или более символов;
_
— одиночный символ.
Подстановочные знаки в Oracle:
%
— ноль или более символов;
_
— одиночный символ;
[]
— одиночный символ из символов, указанных в скобках (можно указать несколько);
{}
— экранированный символ.