Часто, для фильтрации данных нам нужно будет осуществить выборку не по точному совпадению условия, а по приближенному значению. То есть, когда, например, мы ищем товар, название которого соответствует определенному шаблону (регулярному выражению) или содержит определенные символы или слова. Для таких целей в 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, однако со восклицательным знаком (!) запись будет короче.