Оператор 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