SQL-Урок 5. Символи підстановки і регулярні вирази (LIKE)
- 1. Метасимвол знак відсотка (%) або зірочка (*)
- 2. Метасимвол знак підкреслення (_) або знак (?)
- 3. Метасимвол квадратні дужки ([])
- Статті по темі:
Часто, для фільтрації даних, нам потрібно буде здійснити вибірку не по точному збігу умови, а по наближеному значенню. Тобто коли, наприклад, ми шукаємо товар, назва якого відповідає певним шаблоном або містить певні символи або слова. Для таких цілей в SQL існує оператор LIKE, який шукає наближені значення. Для конструювання такого шаблону, використовуйте метасимволи (спеціальні символи для пошуку частини значення), а саме: "знак відсотка" (%) або зірочка (*), "символ підкреслення" (_) або "знак питання" (?), "Квадратні дужки "([]).
1. Метасимвол знак відсотка (%) або зірочка (*)
Давайте з нашої таблиці, наприклад, відберемо записи, які стосуються тільки до товарів, що містять у своїй назві слово Skis (лижі). Для цього складемо відповідний шаблон:
SELECT * FROM Sumproduct WHERE Product LIKE '* Skis *'
Як бачимо, СУБД відібрала тільки ті записи, де в колонці Product були товари, що містять слово Skis. Також відзначимо, що в даному прикладі використовується метасимвол "зірочка" (*), оскільки СУБД Access не підтримує "знак відсотка" (%) для оператора LIKE.
2. Метасимвол знак підкреслення (_) або знак (?)
Знак підкреслення або знак питання застосовується для того, щоб замінити один символ в слові. Давайте в слові Bikes замінимо всі голосні літери на "знак питання" (?) І подивимося на результат:
SELECT * FROM Sumproduct WHERE Product LIKE 'B? K? S'
Ми використовували метасимвол "знак питання" (?), Оскільки СУБД Access не підтримує "знак підкреслення" (_) для оператора LIKE.
3. Метасимвол квадратні дужки ([])
Метасимвол "квадратні дужки" ([]) використовується для одночасного вказівки набору символів, за якими потрібно виконати пошук.
SELECT * FROM Sumproduct WHERE City LIKE '[TN] *'
В наведеному вище прикладі, ми відібрали записи, де в поле City назви міст починаються з літери T або N. Також, в даному випадку, ми можемо використовувати ще один метасимвол, який виконує зворотну дію. Додамо в наше регулярний вираз знак оклику (!), Що означатиме "не дорівнює" (для СУБД Access) або знак ступеня (^) (для інших СУБД).
SELECT * FROM Sumproduct WHERE City LIKE '[! TN] *'
Тобто, останній створений нами запит буде читатися як: вибрати все колонки з таблиці Sumproduct і тільки ті записи, де в поле City назви міст не починаються на літери T або N. Додатково зазначимо, що набір букв в метасимвол "квадратні дужки" відповідає тільки за одну позицію в тексті.
Ми можемо отримати аналогічний результат, якщо скористатися вже відомим нам оператором NOT, однак зі знаком оклику (!) Запис буде коротшим.