ESCAPE в Oracle SQL — как использовать спецсимволы в LIKE-поисках

🟢 ESCAPE в Oracle SQL. Введение

В Oracle SQL оператор ESCAPE используется вместе с LIKE, когда вы хотите искать символы, которые сами по себе являются шаблонами, например % или _.

По умолчанию:

  • % означает любое количество символов

  • _ — ровно один символ

Но что делать, если вы хотите найти букву % как обычный символ?
Здесь на помощь приходит ESCAPE.


🔤 Написание

sql
SELECT ...
FROM ...
WHERE колонка LIKE 'шаблон' ESCAPE 'символ';

ESCAPE определяет, какой символ будет «экранировать» %, _ и другие.


🔄 Где используется

  • Поиск литеральных %, _, [, \ и других специальных символов

  • SQL-интерфейсы, где пользователи могут вводить шаблоны

  • Обработка текстов с метасимволами

  • Работа с путями, тегами и кодами, где есть _ или %


🧪 10 Примеров использования ESCAPE

1️⃣ Найти строки с символом %

sql
SELECT name
FROM documents
WHERE name LIKE '%\%%' ESCAPE '\';

2️⃣ Поиск строки с подчёркиванием _

sql
SELECT code
FROM products
WHERE code LIKE '%\_%' ESCAPE '\';

3️⃣ Поиск шаблона, начинающегося с a% (буквально)

sql
SELECT value
FROM config
WHERE value LIKE 'a\%%' ESCAPE '\';

4️⃣ Поиск вхождений 100%

sql
SELECT comment
FROM reviews
WHERE comment LIKE '%100\%%' ESCAPE '\';

5️⃣ ESCAPE с другим символом (например, #)

sql
SELECT filename
FROM files
WHERE filename LIKE '%#_%' ESCAPE '#';

6️⃣ Поиск шаблона с двойным %%

sql
SELECT pattern
FROM templates
WHERE pattern LIKE '%\%\%%' ESCAPE '\';

7️⃣ Поиск строк с символом слэша \

sql
SELECT text
FROM logs
WHERE text LIKE '%\\%' ESCAPE '\';

8️⃣ LIKE без ESCAPE возвращает лишние совпадения

sql
-- Без ESCAPE
SELECT code FROM items
WHERE code LIKE 'A_%';
-- Найдёт A1, A2, A3...
— С ESCAPE
SELECT code FROM items
WHERE code LIKE ‘A\_%’ ESCAPE ‘\’;
— Найдёт только A_1

9️⃣ Использование в динамическом SQL

plsql
v_query := 'SELECT * FROM users WHERE username LIKE :1 ESCAPE ''\''';

🔟 Работа с путями и слэшами

sql
SELECT path
FROM folders
WHERE path LIKE 'C:\\%' ESCAPE '\';

🧩 Заключение

Оператор ESCAPE — это незаменимая часть синтаксиса, когда требуется точный поиск символов, обычно интерпретируемых как шаблоны.

💡 Запомни:

  • % и _ — это шаблоны, не литералы

  • ESCAPE позволяет искать их буквально

  • Символ экранирования должен быть один (например, \, #, !)

  • Без ESCAPE могут быть неожиданные совпадения


🔜 Следующая статья:

END в Oracle SQL — как завершать блоки, условия и конструкции


Понравилась статья? Поделиться с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии