Оператор выборки в Transact-SQL. Использование представлений (Лабораторная работа № 3), страница 2

Знаки операций сравнения, в большинстве своем, записываются в традиционной форме:

·  > (больше);

·  < (меньше);

·  = (равно);

·  >= (больше или равно);

·  <= (меньше или равно);

·  <> (неравно);

·  != (неравно; такая запись поддерживается Transact-SQL, но может не поддерживаться другими диалектами SQL).

Пример:

select * from trains

                        where train_type = ‘фирменный’

В этом запросе указано условие train_type = ‘фирменный’, т. е. будет производиться выборка данных только о фирменных поездах.

2. A [not] between B and C

Данная конструкция используется для проверки попадания (или непопадания) значения A в диапазон [B; C].

Пример:

            select coach_number, coach_type

                       from coaches

                       where id_train = 2

                       and coach_number between 5 and 10

В этом запросе использовано сложное условие, состоящее из двух частей. Первая часть предписывает выбирать вагоны поезда с идентификатором 2, вторая часть – учитывать вагоны с номерами от 5 до 10. В итоге будет выдана информация о номерах вагонов (но только с пятого по десятый) поезда с идентификатором 2 и типах этих вагонов.

3. A [not] in (список_значений)

Данная конструкция используется для проверки вхождения (или не вхождения) заданного значения в указанный список.

Пример:

            select coach_number, coach_type

                       from coaches

                       where id_train = 2

                       and coach_number in (2, 4, 6, 8, 10)

Данный запрос по смыслу аналогичен предыдущему, но выбираются вагоны не с 5 по 10, а с четными номерами от 2 до 10.

4. A is [not] null

Данная конструкция используется для проверки определенности/неопределенности значения.

Пример:

select *

from trains

where train_name is not null

По этому запросу будут выбраны все строки таблицы trains, в которых значение поля train_name определено. Для того чтобы выбрать строки с неопределенными значениями этого поля, слово not в запросе нужно опустить:

select *

from trains

where train_name isnull

Заметим, что операции сравнения (= и <>)  с null не подходят для проверки определенности/неопределенности значений.

5. S1 [not] like S2 [escape C],

где S1 – строка символов (строковая константа, переменная или столбец таблицы);

S2 – строка-образец;

C – escape-символ.

Данная конструкция позволяет выполнять нечеткое сравнение строки (строковой константы, переменной, поля) S1 со строкой-образцом S2. Образец S2, в отличие от S1, может включать обычные символы и специальные символы для задания шаблона сопоставления (табл. 1). Специальные символы указывают на то, что в данной позиции строки может находиться символ из некоторого множества; любой одиночный символ; любое число любых символов.

Таблица 1 – Специальные символы для нечеткого сравнения строк в SQL Server

Спецсимвол

Описание

Пример

%

Произвольная последовательность символов

Образцу ‘Безопасность%систем%’ соответствуют названия дисциплин, начинающиеся со слова «Безопасность» и содержащие фрагмент «систем» в середине или в конце, например:

  • Безопасность систем баз данных’;
  • Безопасность операционных систем.

Продолжение таблицы 1

_ (подчеркивание)

Один произвольный символ

Образцу ‘д_нные’ соответствуют строки:

  • данные;
  • дынные и др.

Так как во второй позиции может стоять всего один символ, не соответствуют образцу строки:

  • довершенные;
  • дореволюционные;

Впрочем, они, как и первые две, соответствуют другому образцу:

‘д%нные’.


[c1 – c2]

или

[последовательность символов]

Любой символ из указанных в квадратных скобках

Образец ‘[в – п]_езд’

Строки:

  • ‘наезд;
  • ‘поезд;
  • ‘выезд и др.

Образец ‘К[ЫЪЬОЙВЮ]Н’

Строки:

  • КВН;
  • КОН и др.

[^c1 – c2]

или

[^символы]

Любой символ, не входящий в диапазон (множество)

Образец‘[^в – п]_езд’

В данном случае с образцом не совпадает ни одно слово из предыдущего примера, а совпадает, например, слово ‘съезд’.