ПРОВЕРКА НА ЧЛЕНСТВО В МНОЖЕСТВЕ (IN)
ПРОВЕРКА НА ПРИНАДЛЕЖНОСТЬ ДИАПАЗОНУ ЗНАЧЕНИЙ (BETWEEN)
Задается предложением BETWEEN нижняя_граница AND верхняя_граница
При проверке на принадлежность диапазону верхний и нижний пределы считаются частью диапазона.
Инвертированная версия проверки на принадлежность диапазону позволяет выбрать значения, лежащие за пределами диапазона.
Еще одним условием поиска является проверка на членство в множестве (IN). В этом случае проверяется, соответствует ли значение данных какому-либо значению из заданного списка.
С помощью формы not in можно убедиться в том, что значение данных не является членом заданного множества. Проверяемое выражение в проверке in может быть любым допустимым выражением, однако обычно оно представляет собой короткое имя столбца, как в предыдущих примерах. Если результатом проверяемого выражения является значение null, то проверка IN также возвращает значение null. Все значения в списке заданных значений должны иметь один и тот же тип данных, который должен быть сравним с типом данных проверяемого выражения.
Как и проверка between, проверка in не добавляет в возможности SQL ничего нового, поскольку условие поиска
Х IN (А, В, С)
полностью эквивалентно условиям
(X = A) OR (X = В) OR (X = С)
Однако проверка in предлагает гораздо более эффективный способ выражения условия поиска, особенно если множество содержит большое число элементов. В стандарте ANSI/ISO не определено максимальное количество элементов множества, и в большинстве коммерческих реализаций не задано явного верхнего предела. По соображениям переносимости лучше избегать множеств, содержащих один элемент, наподобие такого:
CITY IN ('New York')
Их следует заменять на следующее простое сравнение:
CITY = 'New York'
Для чтения строк, в которых содержимое некоторого текстового столбца совпадает с заданным текстом, можно использовать простое сравнение/
Поверка на соответствие шаблону (ключевое слово like) позволяет определить, соответствует ли значение данных в столбце некоторому шаблону. Шаблон представляет собой строку, в которую может входить один или более подстановочных знаков. Эти знаки интерпретируются особым образом.
ПОДСТАНОВОЧНЫЕ ЗНАКИ
Подстановочный знак % совпадает с любой последовательностью из нуля или более символов.
Подстановочный знак "_" (символ подчеркивания) совпадает с любым отдельным символом.
Подстановочные знаки можно помещать в любое место строки шаблона, и в одной строке может содержаться несколько подстановочных знаков.
С помощью формы not like можно находить строки, которые не соответствуют шаблону. Проверку like можно применять только к столбцам, имеющим строковый тип данных. Если в столбце содержится значение null, то результатом проверки like будет значение null.
СИМВОЛЫ ПРОПУСКА *
При проверке строк на соответствие шаблону может оказаться, что подстановочные знаки входят в строку символов в качестве литералов. Например, нельзя проверить, содержится ли знак процента в строке, просто включив его в шаблон, поскольку SQL будет считать этот знак подстановочным. Как правило, это не вызывает серьезных проблем, поскольку подстановочные знаки довольно редко встречаются в именах, названиях товаров и других текстовых данных, которые обычно хранятся в базе данных.
В стандарте ANSI/ISO определен способ проверки наличия в строке литералов, использующихся в качестве подстановочных знаков. Для этого применяются символы пропуска. Когда в шаблоне встречается такой символ, то символ, следующий непосредственно за ним, считается не подстановочным знаком, а литералом. (Происходит пропуск символа.) Непосредственно за символом пропуска может следовать либо один из двух подстановочных знаков, либо сам символ пропуска, поскольку он тоже приобретает в шаблоне особое значение.
Символ пропуска определяется в виде строки, состоящей из одного символа, и предложения escape
Первый символ процента в шаблоне, следующий за символом пропуска, считается литералом; второй считается подстановочным знаком.
Символы пропуска часто используются при проверке на соответствие шаблону; именно поэтому они были включены в стандарт ANSI/ISO. Однако они не входили в первые реализации SQL и поэтому не очень распространены. Для обеспечения переносимости приложений предложения escape использовать не следует.