SQL-Урок 5. Символи підстановки і регулярні вирази (LIKE)

  1. 1. Метасимвол знак відсотка (%) або зірочка (*)
  2. 2. Метасимвол знак підкреслення (_) або знак (?)
  3. 3. Метасимвол квадратні дужки ([])
  4. Статті по темі:

Часто, для фільтрації даних, нам потрібно буде здійснити вибірку не по точному збігу умови, а по наближеному значенню. Тобто коли, наприклад, ми шукаємо товар, назва якого відповідає певним шаблоном або містить певні символи або слова. Для таких цілей в SQL існує оператор LIKE, який шукає наближені значення. Для конструювання такого шаблону, використовуйте метасимволи (спеціальні символи для пошуку частини значення), а саме: "знак відсотка" (%) або зірочка (*), "символ підкреслення" (_) або "знак питання" (?), "Квадратні дужки "([]).

1. Метасимвол знак відсотка (%) або зірочка (*)

Давайте з нашої таблиці, наприклад, відберемо записи, які стосуються тільки до товарів, що містять у своїй назві слово Skis (лижі). Для цього складемо відповідний шаблон:

SELECT * FROM Sumproduct WHERE Product LIKE '* Skis *'

SELECT * FROM Sumproduct WHERE Product LIKE '* Skis *'

Як бачимо, СУБД відібрала тільки ті записи, де в колонці Product були товари, що містять слово Skis. Також відзначимо, що в даному прикладі використовується метасимвол "зірочка" (*), оскільки СУБД Access не підтримує "знак відсотка" (%) для оператора LIKE.

2. Метасимвол знак підкреслення (_) або знак (?)

Знак підкреслення або знак питання застосовується для того, щоб замінити один символ в слові. Давайте в слові Bikes замінимо всі голосні літери на "знак питання" (?) І подивимося на результат:

SELECT * FROM Sumproduct WHERE Product LIKE 'B? K? S'

S'

Ми використовували метасимвол "знак питання" (?), Оскільки СУБД Access не підтримує "знак підкреслення" (_) для оператора LIKE.

3. Метасимвол квадратні дужки ([])

Метасимвол "квадратні дужки" ([]) використовується для одночасного вказівки набору символів, за якими потрібно виконати пошук.

SELECT * FROM Sumproduct WHERE City LIKE '[TN] *'

SELECT * FROM Sumproduct WHERE City LIKE '[TN] *'

В наведеному вище прикладі, ми відібрали записи, де в поле City назви міст починаються з літери T або N. Також, в даному випадку, ми можемо використовувати ще один метасимвол, який виконує зворотну дію. Додамо в наше регулярний вираз знак оклику (!), Що означатиме "не дорівнює" (для СУБД Access) або знак ступеня (^) (для інших СУБД).

SELECT * FROM Sumproduct WHERE City LIKE '[! TN] *'

Тобто, останній створений нами запит буде читатися як: вибрати все колонки з таблиці Sumproduct і тільки ті записи, де в поле City назви міст не починаються на літери T або N. Додатково зазначимо, що набір букв в метасимвол "квадратні дужки" відповідає тільки за одну позицію в тексті.

Ми можемо отримати аналогічний результат, якщо скористатися вже відомим нам оператором NOT, однак зі знаком оклику (!) Запис буде коротшим.

Статті по темі:

  • SQL-Урок 4. Фільтрація даних (WHERE)
  • SQL-Урок 6. Обчислювані поля
  • K?