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