"Пристрелка" к нужным данным
LIKE и NOT LIKE
Для сравнения двух символьных строк, чтобы выяснить их частичное соответствие друг другу, можно использовать предикат LIKE (похожий). Частичное соответствие представляет ценность тогда, когда о разыскиваемой строке что-то все-таки известно, но не известно, как она в точности выглядит. Кроме того, частичные соответствия можно использовать, чтобы получить из таблицы множество строк, в которых один из столбцов содержит похожие друг на друга символьные строки.
Чтобы указать частичные соответствия, в SQL используются два символа-маски (wildcard character). Знак процента (%) означает любую строку, состоящую из любого количества символов (в том числе и равного нулю). Символ подчеркивания (_) означает любой одиночный символ. Некоторые примеры того, как можно использовать предикат LIKE, показаны в табл. 9.3.
Таблица 9.3. Предикат like, используемый в SQL.
Выражение | Возвращаемые значения |
---|---|
WHERE WORD LIKE 'intern%' | intern |
internal | |
international | |
internet | |
interns | |
WHERE WORD LIKE '%Peace%' | Justice of the Peace |
Peaceful Warrior | |
WHERE WORD LIKE 't_p_' | tape |
taps | |
tipi | |
tips | |
tops | |
type |
Предикат NOT LIKE (не похожий) дает возможность получить все строки, которые не удовлетворяют частичному соответствию, имеющему, как в следующем примере, не менее одного символа-маски:
WHERE PHONE NOT LIKE '503%'
В этом случае будут возвращены все строки таблицы, в которых телефонный номер, содержащийся в столбце PHONE (телефон), не начинается с 503.
Совет:
Возможно, вам потребуется выполнить поиск строки, в которой находится знак процента или символ подчеркивания. В таком случае необходимо, чтобы SQL интерпретировал, например, знак процента как знак процента, а не как символ-маску. Проводить такой поиск можно, если перед символом, который при поиске должен восприниматься буквально, ввести управляющий символ. В качестве такого символа можно назначить любой символ, лишь бы его не было в проверяемой строке. Как это сделать, показано в следующем примере:
SELECT Quote FROM BARTLETTS WHERE Quote LIKE '20#%' ESCAPE '#';
Символ % превращается в обычный из символа-маски с помощью стоящего перед ним символа #. Точно таким же способом можно отключить и символ подчеркивания, а также сам управляющий символ. Например, предшествующий запрос должен найти такую цитату из "Bartlett's Familiar Quotations" (Известные цитаты Бартлетта):
20% of the salespeople produce 80% of the results.
Данный запрос найдет также следующее:
20%