Задание условий отбора полей

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

В каждом условии посредством операторов сравнения задается проверка соответствия некоторого выражения (как правило значения поля БД) заданному значению в формате <выражение1> <оператор сравнения> <выражение2>, выражение 1 и выражение 2 (3 и т.д.) - выражения, которые могут состоять из констант, названий полей данных, функций и подзапросов, объединенных арифметическими операторами и скобками. Например, при заданном в запросе условии Квартал='105', в таблице результатов будут выведены все записи БД слоя, для которых в поле Квартал задано значение 105.

Условия отбора могут объединяться с использованием логических операторов NOT, AND, OR. («Применение логических операторов»)

Полный список доступных операторов сравнения приведен в таблице далее:

Таблица 10. Операторы сравнения

ОператорОписаниеПримеры
IS NULL, IS NOT NULL

Выражение IS NULL проверяет, равно ли выражение в левой части оператора - Null, то есть пустому значению. Значение равное Null имеют незаданные поля.

Выражение IS NOT NULL соответственно проверяет неравенство значения Null.

Улица IS NULL (все записи в которых не задано поле Улица)

Area IS Not NULL (все записи в которых задано поле Area)

=

Проверяется равенство значений.

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

Квартал='105' (Здания относящиеся к 105 кварталу)
>, < Операторы «строгого» неравенства, проверяется что значение в левой части выражения строго больше, либо строго меньше значения в правой.

perimeter>50 (все здания с периметром более 50 метров)

area<300 (все здания с площадью меньше 300 кв.м.

>=, <=Операторы «нестрогого» неравенства, проверяется что значение в левой части выражения больше либо равно, или меньше либо равно значению в правой части.

perimeter>=50 (все здания периметр которых равен, либо более 50 метров)

area<=300 (все здания с площадью меньше, либо равной 300 кв.м.)

!<, !>Альтернативная запись операторов нестрого неравенства. Проверяется что значение в левой части выражения не меньше, либо не больше значения в правой части.

perimeter!<50 (все здания с периметром равным, либо превышающим 50 метров)

area!>300 (все здания с площадью не больше 300 кв.м.)

<>, !=Операторы неравенства. Проверяется, неравенство значений.

Улица<>'2й Южный пер.'

Квартал!='105'

BETWEEN Операция сравнения, проверяющая расположение значения в левой части выражения в заданном диапазоне значений в правой части выражения. Оператор задается в формате <выражение 1>BETWEEN<1>AND<2>, где <1> и <2> нижняя и верхняя границы допустимых значений.

[Номер дома] BETWEEN 1 AND 5 (все здания с номерами от 1 до 5)

LIKE

Проверяется соответствие строкового значения шаблону, заданному в параметре оператора LIKE. В шаблоне могут использоваться буквы алфавита и знаки препинания, а также различные символы и выражения подстановки:

  • % - вместо данного символа в искомой строке может располагаться любое количество произвольных символов. Для поиска в искомой строке непосредственно символа %следует его продублировать;

  • _- один произвольный символ;

  • Квадратные скобки [] - на место квадратных скобок символ указанный в данных скобках. В скобках могут либо перечисляться допустимые символы (например [abc] соответствует символам a, или b, или c , либо указываться диапазон допустимых символов, (например [a-z] соответствует любому символу от а до z).

    Если после открывающей скобки стоит знак ^, допустимы все символы кроме заданных в скобках. Например для выражения [^135] допустимы любые символы, кроме 1, 3, 5.

Для поиска в исходной строке самих символов подстановки можно заключать их в квадратные скобки (например [%] для поиска знака %, или [[] для поиска символа [), либо задать так называемый escape символ (задается выражением ESCAPE <символ> после команды LIKE). В шаблоне подстановки escape символ указывается перед символом подстановки который требуется искать в строке.

Улица LIKE '%Южный пер.' (все записи с текстом заканчивающимся на Южный пер.)

Улица LIKE '_й Южный пер.' (все строки начинающиеся с произвольного символа и заканчивающиеся на й Южный пер.)

Улица LIKE '[0-9]%' (строки начинающиеся с цифры)

Улица LIKE '[авдй]_' (строки из двух символов - первый символ один из а, в, д, й и второй - произвольный)

Улица LIKE '[^0-9]%' (любая строка не начинающаяся с цифры)

Улица LIKE '[[]%]' (строки заключенные в квадратные скобки) Обратите внимание, что знак ] не является сам по себе символом подстановки и может указываться напрямую.

Улица LIKE '!%%!^' ESCAPE '!' (любая строка, начинающаяся со знака % и заканчивающаяся знаком ^).

IN

Проверяется соответствие значения одному из значений перечисленному после ключевого слова IN в формате <Выражение>IN (<Значение1>, <Значение2>...,<Значение N>), где <Значение1> -<Значение N>, список допустимых значений записи.

Список допустимых значений может быть результатом выполнения подзапроса («Подзапросы»).

Улица IN ('Нахимова', '1й Южный пер.') (все здания располагающиеся на улицах Нахимова и 1й Южный пер.)
EXISTS Операция сравнения, которая возвращает TRUE, если подзапрос (subquery) возвращает по крайней мере одну строку («Подзапросы»).EXISTS (subquery)