SQL — Подстановочные знаки
Символ подстановки используется для замены любого другого символа в строке. Подстановочные символы используются с оператором SQL LIKE . Оператор LIKE используется в предложении WHERE для поиска заданного шаблона в столбце. В сочетании с оператором LIKE используются две подстановочные знаки:
- % — Знак процента представляет нулевой, один или несколько символов
- _ — Подчеркнутый символ представляет собой один символ
Примеры, с разными LIKE-операторами с «%» и «_» подстановочными знаками:
| Выражение | Описание |
| WHERE name LIKE ‘text%’ | Находит любые значения, начинающиеся с «text» |
| WHERE name LIKE ‘%text’ | Находит любые значения, заканчивающиеся на «text» |
| WHERE name LIKE ‘%text%’ | Находит любые значения, которые имеют «text» в любой позиции |
| WHERE name LIKE ‘_text%’ | Находит любые значения, которые имеют «text» во второй позиции |
| WHERE name LIKE ‘text_%_%’ | Находит любые значения, начинающиеся с «text» и длиной не менее 3 символов |
| WHERE name LIKE ‘text%data’ | Находит любые значения, начинающиеся с «text» и заканчивающиеся на «data» |
Использование символа %
Следующий оператор SQL выбирает всех пользователей с name, начинающимся с «Т»:
Пример:
SELECT * FROM users WHERE name LIKE 'Т%';
Следующий оператор SQL выбирает всех пользователей с именем, содержащим шаблон «То»:
Пример:
SELECT * FROM users WHERE name LIKE '%То%';
Использование подстановочного знака
Следующий оператор SQL выбирает всех пользователей с name, начиная с любого символа, за которым следует «о»:
Пример:
SELECT * FROM users WHERE name LIKE '_о';
Следующий оператор SQL выбирает всех пользователе с name начиная с «Т», за которым следует любой символ, за которым следует «м», за которым следует любой символ, а затем «с»:
Пример:
SELECT * FROM users WHERE name LIKE 'Т_м_с';
Использование подстановочного знака [charlist]
Следующий оператор SQL выбирает всех пользователей с name, начиная с «Т», «Р» или «Е»:
Пример:
SELECT * FROM users WHERE name LIKE '[ТРЕ]%';
Следующий оператор SQL выбирает всех пользователей с name, начиная с «Т», «Р» или «Е»:
Пример:
SELECT * FROM users WHERE name LIKE '[Т-E]%';
Использование подстановочного знака [! Charlist]
Два следующих оператора SQL выбирают всех пользователей с помощью name NOT, начинающегося с «Т», «Р» или «E»:
Пример:
SELECT * FROM users WHERE name LIKE '[!ТРЕ]%';
Пример:
SELECT * FROM users WHERE name NOT LIKE '[ТРЕ]%';
SQL-Урок 5. Символы подстановки и регулярные выражения (LIKE)
Часто, для фильтрации данных нам нужно будет осуществить выборку не по точному совпадению условия, а по приближенному значению. То есть, когда, например, мы ищем товар, название которого соответствует определенному шаблону (регулярному выражению) или содержит определенные символы или слова. Для таких целей в SQL существует оператор LIKE, ищущий приближенные значения. Для конструирования такого шаблона используются метасимволы (специальные символы, для поиска части значения), а именно: знак процента (%) или звездочка (*), символ подчеркивания (_) или знак вопроса (?), квадратные скобки» ([ ]).
1. Метасимвол знак процента (%) или звездочка (*)
Давайте из нашей таблицы, например, отберем записи, относящиеся только к товарам, содержащим в своем названии слово Skis (лыжи). Для этого составим соответствующий шаблон:
Run SQLSELECT * FROM Sumproduct WHERE Product LIKE '*Skis*'
Try it Yourself
Как видим, СУБД отобрала только те записи, где в колонке Product были товары, содержащие слово Skis.
В данном примере используется метасимвол «звездочка» (*), поскольку MS Access не поддерживает «символ процента» (%) для оператора LIKE.
2. Метасимвол знак подчеркивания (_) или вопросительный знак (?)
Знак подчеркивания или вопросительный знак применяется для того, чтобы заменить один символ в слове. Давайте в слове Bikes заменим все громкие буквы на «знак вопроса» (?) и посмотрим на результат:
Run SQLSELECT * FROM Sumproduct WHERE Product LIKE 'B?k?s'
Try it Yourself

Мы использовали метасимвол «знак вопроса» (?), поскольку MS Access не поддерживает «знак подчеркивания» (_) для оператора LIKE.
3. Метасимвол квадратные скобки ([ ])
Метасимвол «квадратные скобки» ([ ]) используется для одновременного указания набора символов, по которым нужно произвести поиск.
SELECT * FROM Sumproduct WHERE City LIKE '[TN]*'

В примере выше мы отобрали записи, где в поле City названия городов начинаются с буквы T или N.
Mетасимвол «квадратные скобки» ([ ]) не поддерживается в диалекте MySQL.
Также, в данном случае, мы можем использовать еще один метасимвол, выполняющий обратное действие. Добавим в наше регулярное выражение восклицательный знак (!), что означает «не равно» (для MS Access) или знак степени (^) (для других СУБД).
SELECT * FROM Sumproduct WHERE City LIKE '[!TN]*'

То есть, последний созданный нами запрос будет читаться как: выбрать все колонки из таблицы Sumproduct, и только те записи, где в поле City названия городов не начинаются на буквы T или N. Дополнительно отметим, что набор букв в метасимволе «квадратные скобки» отвечает только за одну позицию в тексте.
Мы можем получить аналогичный результат, если воспользоваться уже известным нам оператором NOT, однако со восклицательным знаком (!) запись будет короче.
- Изменение регистра букв в тексте
- Сумма прописью на украинском языке
- Поиск латиницы в кириллице и наоборот
- Транслитерация с украинского на английский
Символ процента (подстановочный знак — символы для сопоставления) (Transact-SQL)
Совпадает с любой строкой из нуля или более символов. Этот подстановочный знак можно использовать в качестве префикса, суффикса или в середине строки. Строка шаблона может содержать несколько % подстановочных знаков.
Примеры
Пример A. Совпадение конца строки
В следующем примере возвращаются первые и фамилии людей в Person.Person таблице AdventureWorks2022 , где начинается Dan имя.
SELECT FirstName, LastName FROM Person.Person WHERE FirstName LIKE 'Dan%'; GO
Пример B. Соответствие середине строки
В следующем примере возвращаются первые и фамилии людей в Person.Person таблице AdventureWorks2022 , где имя начинается с J и заканчивается n .
SELECT FirstName, LastName FROM Person.Person WHERE FirstName LIKE 'J%n'; GO
См. также
- LIKE (Transact-SQL)
- Операторы (Transact-SQL)
- Выражения (Transact-SQL)
- [ ] (подстановочный знак — символы для сопоставления)
- [^] (подстановочный знак — символы не для сопоставления)
- _ (подстановочный знак — совпадение одного символа)
Обратная связь
Были ли сведения на этой странице полезными?
Обратная связь
Отправить и просмотреть отзыв по
Основы PL/SQL: набор специальных символов

Программа PL/SQL представляет собой последовательность команд, состоящих из одной или нескольких строк текста. Набор символов, из которых составляются эти строки, зависит от используемого в базе данных набора символов. Для примера в табл. 1 приведены символы набора US7ASCII.
| Тип | Символы |
| Буквы | A-Z, a-z |
| Цифры | 0-9 |
| Знаки | ~ ! @ # $ % * () _ — + = | : ; » ‘ < >, . ? / ^ |
| Пропуски (whitespace) | Табуляция, пробел, новая строка, возврат каретки |
Каждое ключевое слово, оператор и лексема PL/SQL состоит из разных комбинаций символов данного набора. Остается разобраться, как связать эти символы друг с другом!
А теперь любопытный факт о PL/SQL. В документации Oracle (а также в предыдущих изданиях этой книги) символы &, < >и [ ] также были отнесены к стандартному набору символов. Хотя эти символы допустимы в литеральных строках, Oracle не использует их в коде PL/SQL. Более того, эти символы не могут непосредственно включаться в идентификаторы, определяемые программистом.
Запомните, что язык PL/SQL не учитывает регистр символов. Это означает, что символы верхнего регистра интерпретируются так же, как символы нижнего регистра (кроме символов, заключенных в ограничители, с которыми они интерпретируются как литеральная строка). В книге встроенные ключевые слова языка (а также некоторые идентификаторы, используемые Oracle в качестве имен встроенных функций и пакетов) обычно записываются в верхнем регистре, а идентификаторы, определяемые программистом, — в нижнем регистре.

Некоторые символы — как по отдельности, так и в сочетании с другими символами — имеют в PL/SQL специальное значение. Эти специальные символы (простые и составные) перечислены в табл. 2.
| Символы | Описание |
| ; | Завершает объявления и команды |
| % | Индикатор атрибута (атрибут курсора, подобный %ISOPEN, или атрибут неявных объявлений, например %ROWTYPE) также используется в качестве символа подстановки в условии LIKE |
| _ | Обозначение подстановки одного символа в условии LIKE |
| @ | Признак удаленного местоположения |
| : | Признак хост-переменной, например :block.item в Oracle Forms |
| ** | Оператор возведения в степень |
| <> или != или ^= или ~= | Оператор сравнения «не равно» |
| || | Оператор конкатенации |
| > | Ограничители метки |
| = | Операторы сравнения «меньше или равно» и «больше или равно» |
| := | Оператор присваивания |
| => | Оператор ассоциации |
| .. | Оператор диапазона |
| — | Признак однострочного комментария |
| /* и */ | Начальный и конечный ограничители многострочного комментария |
Символы группируются в лексические единицы, которые называются атомарными, поскольку они представляют собой наименьшие самостоятельные элементы языка. В PL/SQL лексическими единицами являются идентификатор, литерал, разделитель и комментарий. Мы рассмотрим их в следующей статье моего блога.
