Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
69
Добавлен:
23.11.2017
Размер:
3.23 Mб
Скачать

Проверка на членство во множестве

Спомощью этого условия поиска можно узнать, соответствует ли значение данных какому-либо значению из заданного списка (рис. 8.8).

Например, следующий оператор выводит список жителей с заданными номерами:

SELECT * FROM PERSON

WHERE NOM IN (1,3,5,9)

Список жителей, родившихся указанные дни, формируется оператором

SELECT * FROM PERSON

WHERE RDATE IN (‘02/12/55’,’11/11/11’)

С помощью проверки NOT IN можно обнаружить значения данных, не являющиеся членами заданного множества:

SELECT * FROM FLAT

WHERE KCATEGORY NOT IN (‘П’,’К’)

Проверяемое выражение может быть любым допустимым выражением, однако обычно оно представляет собой имя столбца.

Если результатом проверяемого выражения является значение NULL, то проверка возвращает значение NULL.

Все константы в списке проверяемых значений должны быть одного и того же типа, который должен быть совместим с типом проверяемого выражения.

Проверка на соответствие шаблону

Для формирования таблицы результатов, состоящей из строк, в которых значение некоторого текстового столбца (поля) совпадает с заданным текстом, можно использовать простое сравнение. Например, следующий оператор создает таблицу результатов из строк, в которых встречается заданные фамилия имя и отчество жителя:

SELECT * FROM PERSON

WHERE FIO = ‘Иванов Иван Иванович’

Однако, если необходимо получить сведения о всех Ивановых, то следует воспользоваться проверкой на соответствие шаблону (рис. 8.9).

Эта конструкция позволяет определить, соответствует ли значение данных в столбце некоторому шаблону. Шаблон представляет собой строку символов, в которую может входить один или более подстановочных знаков. Эти знаки интерпретируются особым образом.

Подстановочный знак % совпадает с любой последовательностью из нуля или более символов. Например, чтобы получить сведения обо всех Ивановых, нужно воспользоваться шаблоном:

SELECT * FROM PERSON

WHERE FIO LIKE ‘Иванов %’

Ключевое слово LIKE указывает, что необходимо сравнивать содержимое столбца FIO с шаблоном ‘Иванов %’, которому соответствуют все фамилии, начинающиеся словом “Иванов”, в том числе “Ивановский”. Чтобы получить сведения только о мужчинах Ивановых или только о женщинах Ивановых, следует использовать шаблон ‘Иванов %’ или ‘Иванова %’ соответственно.

Подстановочный знак “-” (подчеркивание) совпадает любым отдельным символом. Например, для получения сведений о жителях, проживающих в 1-ом микрорайоне, можно воспользоваться таким шаблоном:

SELECT * FROM PERSON

WHERE ADR LIKE ‘Зеленоград, 1__-%’

Подстановочные знаки можно помещать в любое место шаблона, и в одном шаблоне может содержаться несколько подстановочных знаков.

С помощью конструкции NOT LIKE можно выбирать строки, которые не соответствуют шаблону.

Проверка на соответствие шаблону применима только к столбцам, имеющим строковый тип данных или содержащим дату и время. Если в столбце содержится значение NULL, то результатом проверки будет значение NULL.

Может случиться так, что среди символов, содержащихся в столбце, окажутся в качестве отдельных символов подстановочные знаки:

X

Y

Z

…….

AB%CD

…….

…….

A_D%E

…….

В стандарте SQL1 определен способ проверки наличия в строке литер, используемых в качестве подстановочных знаков. Для этого применяются символы пропуска.

Когда в шаблоне встречается символ пропуска, то символ, следующий непосредственно за ним, считается не подстановочным знаком, а обычной литерой, т.е. происходит пропуск символа.

Непосредственно за символом пропуска может следовать либо один из двух подстановочных знаков, либо сам символ пропуска, поскольку он тоже приобретает в шаблоне особое значение.

С

подстановочный знак

имвол пропуска определяется в предложенииESCAPE в виде строки, состоящей из одного символа. В следующем примере в качестве символа пропуска используется литера “@”, и шаблон обеспечивает выборку адресов, в которых встречается сочетание символов “A_B%” и которые заканчиваются литерой “@”:

SELECT ADR FROM FLAT

WHERE ADR LIKE ‘%A@_B@%%@@’

символ пропуска

ESCAPE ‘@’

Соседние файлы в папке БД лабы