Преобразование вывода и встроенные функции



Операторы IN, BETWEEN, LIKE, IS NULL При задании логического условия в предложении WHERE могут быть использованы операторы IN, BETWEEN, LIKE, IS NULL. Операторы IN (PABEH ЛЮБОМУ ИЗ СПИСКА) и NOT IN (НЕ РАВЕН НИ ОДНОМУ ИЗ СПИСКА) используются для сравнения проверяемого значения поля с заданным списком. Этот список значений указывается в скобках справа от оператора IN. Список значений не обязательно задается в явном виде, он может представлять собой результат подзапроса. Построенный с использованием IN предикат (условие) считается истинным, если значение поля, имя которого указано слева от IN, в точности совпадает с одним из значений, перечисленных в списке, указанном в скобках справа от IN. Предикат, построенный с использованием NOT IN, считается истинным, если значение поля, имя которого указано слева от NOT IN, не совпадает ни с одним из значений, принадлежащих списку, указанному в скобках справа от NOT IN.

Пример 1.

Получить из таблицы EXAM_MARKS сведения о студентах; имеющих экзаменационные оценки только 4 и 5.

SELECT *

FROM EXAM_MARKS

WHERE MARK IN (4,5);

Пример 2.

Получить сведения о студентах, не имеющих ни одной экзаменационной оценки, равной 4 или 5

SELECT *

FROM EXAM_MARKS

WHERE MARK NOT IN (4, 5);

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

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

SELECT *

FROM SUBJECT

WHERE HOUR BETWEEN 30 AND 40;

Граничные значения, в данном случае значения: 30 и 40, входят во множество значений, с которыми производится сравнение. Оператор BETWEEN может использоваться как для числовых, так и для символьных типов полей.

Оператор LIKE применим только к символьным полям типа СНА R или VARCHAR. Этот оператор осуществляет просмотр строковых значений полей с целью определения, входит ли заданная в операторе LIKE подстрока (образец поиска) в символьную строку, являющуюся значением проверяемого поля.

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

· символ подчеркивания "_", указанный в шаблоне образца, определяет возможность наличия в указанном месте одного любого символа,

· символ "%" допускает присутствие в указанном месте проверяемой строки последовательности любых символов произвольной длины.

Пример.

Написать запрос, выбирающий из таблицы STUDENT сведения о студентах, у которых фамилии начинаются на букву "Р".

SELECT *

FROM STUDENT

WHERE SURNAME LIKE 'Р%';

Так как символы "_" и "%" выполняют в языке SQL указанные выше специальные функции, возникает проблема, когда необходимо их указывать в текстовом образце в качестве обычных, а не служебных символов. В этих случаях применяют специальный механизм, позволяющий при интерпретации системой строки-образца отключить управляющие функции этих символов. Отключить служебные функции сиволов "_" и "%" можно путем вставки непосредственно перед ними так называемого escape-символа (escape character). Этот символ, который можно еще назвать знаком перехода или знаком отключения, является служебным знаком, используемым для указания того, что должен быть изменен характер интерпретации следующего непосредственно за ним символа. В нашем случае если такой символ предшествует знаку "_" или "%", то этот знак будет интерпретироваться уже буквально, как любой другой символ, а не как служебный символ. В SQL в качестве такого переключающего: (escape) символа может быть назначен любой символ. для этих целей. Предназначено специальное ключевое слово ESCAPE.

Например можно задать образец поиска с. помощью следующего выражения:

LIKE '_\_Р' ESCAPE  ‘\’

В этом выражении символ "\" с помощью ключевого cлова ESCAPE объявляется escape-символом. Первый символ “_” в заданном шаблоне поиска "_\_ Р" будет соответствовать, как и ранее, любому набору символов в проверяемой строке. Однако второй символ "_", следующий после символа "\", объявленного escape-символом, уже будет интерпретироваться буквально как обычный символ, так же как и символ Р в заданном шаблоне.

Обращаем ваше внимание на то, что в операторах сравнения =, <, >, <=, >=, <> и операторах IN, BETWEEN и LIKE при использовании NULL в качестве операнда будет возвращаться также NULL; В связи с этим, для проверки содержимого поля на наличие (отсутствие): в нем пустого значения NULL следует использовать специально предназначенные для этого операторы IS NULL (ЯВЛЯЕТСЯ ПУСТЫМ) и IS NOT NULL (HE ЯВЛЯЕТСЯ ПУСТЫМ), а не выражения = NULL  или <> NULL

УПРАЖНЕНИЯ

1. Напишите запрос, выполняющий вывод находящихся в таблице EXAM_MARKS номеров предметов обучения, экзамены по которым сдавались между 10 и 20 января 2005 г.

2. Напишите запрос, выбирающий данные обо всех предметах обучения, экзамены по которым сданы студентами, имеющими идентификаторы 12 и 32.

3. Напишите запрос, который выполняет :вывод названий. предметов обучения, начинающихся на букву 'И'-;

4. Напишите запрос, выбирающий сведения о студентах, у которых имена начинаются на букву 'И' или 'С'.

5. Напишите запрос для выбора из таблицы EXAM_MARKS записей, для которых отсутствуют значения оценок (поле MARK).

6. Напишите запрос, выполняющий вывод из таблицы EXAM_MARKS записей, для которых в поле NARK проставлены значения оценок.

7. Напишите запрос для получения списка преподавателей, проживающих в городах, в названиях которых присутствует дефис.

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

9. Напишите запрос для получения списка предметов, названия которых оканчиваются на 'ия'.

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

11. Напишите запрос для получения списка студентов, фамилии которых начинаются на 'Ков' или на 'Куз'.

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

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

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

 

Преобразование вывода и встроенные функции

В SQL реализованы операторы преобразования данных и встроенные функции, предназначенные для работы со значениями столбцов и/или константами в выражениях. Использование этих операторов допустимо в запросах везде, где можно использовать выражения.


Дата добавления: 2019-02-12; просмотров: 1404; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!