Оператор LIKE
Оператор IN
IN полностью определяет множество, к которому данное значение может принадлежать или не принадлежать. Допустим, нужно наити всех продавцов, расположенных либо в «Barcelona», либо в «London»:
SELECT * FROM Sales people
WHERE city = «Barcelona» OR city = «London»:
IN позволяет упростить:
SELECT * FROM Sales people
WHERE city IN («Barcelona», «London»);
Пример 2. Найти всех покупателей, обслуживаемых продавцами 1001, 1007, 1004.
SELECT * FROM Customers
WHERE snum IN (1001, 1007, 1004);
Оператор BETWEEN … AND
Вместо перечисления, как в IN, в BETWEEN задаются границы. Первое значение должно быть первым в алфавитном или числовом порядке (чувствителен к порядку).
SELECT * FROM Salespeople
WHERE comm BETWEEN .10 AND .12;
Граничные значения включаются в зону истинности. Если их нужно исключить, то:
SELECT * FROM Salespeople
WHERE (comm BETWEEN .10 and .12) and not
Comm IN (.10, .12);
Для символьных полей:
SELECT * FROM Salespeople
WHERE cname BETWEEN “A” AND “G”;
Заметим, что “A” и “G” строки и при сравнении неравные строки заполняются пробелами, но пробел предшествует символам в алфавитной кодировке, поэтому строка “Giovanni” не будет включена, поэтому нужно либо дать следующую букву- «Н», либо приписать несколько Z к G- “GZZ”, чтобы включить все имена на G.
Используется для поиска подстрок и применим только к символьным (текстовым) полям. Для расширения зоны поиска применяются символы- шаблоны:
« - »- заменяет один любой; %- последовательность, в том числе и нулевой длины.
SELECT * FROM Customers
WHERE cname LIKE “G%”;
Возникает проблема для самих этих символов (как искать их). Для ее решения существует возможность определить так называемый ESCAPE- символ. Предшествуя символу- шаблону ESCAPE-символ делает из него обычный символ. Он действует и на себя самого если указать два раза подряд.
SELECT * FROM Sales people
WHERE sname LIKE “%/-%” ESCAPE ‘/’;
определяет символ ‘/’ как служебный ESCAPE