- •Лабораторная работа 4
- •Цели лабораторной работы
- •Описание и примеры
- •Основные фразы запроса: select и from Фраза select
- •Фраза from
- •Фраза where
- •Использование простых условий Использование операторов сравнения
- •Логические операторы
- •Выражение над столбцами во фразе where
- •Специальные операторы Оператор in
- •Оператор between
- •Оператор like
- •Операторы is null и is not null.
- •Варианты заданий
- •Вариант 1
- •Вариант 2
- •Вариант 3
- •Вариант 4
- •Вариант 5
- •Вариант 6
- •Вариант 7
- •Вариант 8
- •Вариант 9
- •Вариант 10
- •Вариант 11
- •Вариант 12
- •Вариант 13
- •Вариант 14
- •Вариант 15
- •Вариант 16
- •Вариант 17
- •Вариант 18
- •Контрольные вопросы
- •Приложения Приложение a. Операторы sql Oracle
- •Унарные и бинарные операторы
- •Старшинство операторов
- •Арифметические операторы
- •Оператор конкатенации
- •Операторы сравнения
- •Логические операторы
- •Теоретико-множественные операторы
- •Приложение b. Выражения
- •Простые выражения
Оператор between
Оператор BETWEEN. Оператор дает TRUE, если аргумент слева находится в интервале, задаваемом двумя значениями правого аргумента. Єти два значения включаются в интервал.
Пример 10. Оператор BETWEEN: Выдать преподавателей со ставкой в интервале 150 -350:
SELECT Name
FROM TEACHER
WHERE Salary BETWEEN 150.00 AND 350.00;
Оператор BETWEEN имеет другое эквивалентное представление. Так, предыдущий запрос может быть записан так:
SELECT Name
FROM TEACHER
WHERE Salary >= 150.00 AND Salary <= 350.00;
Оператор NOT BETWEEN. Оператор NOT BETWEEN является отрицанием к BETWEEN.
Пример 11. Оператор NOT BETWEEN: Выдать кафедры с фондами вне интервала 20000-50000:
SELECT Name
FROM DEPARTMENT
WHERE Fund NOT BETWEEN 20000.00 AND 50000.00;
SELECT Name
FROM DEPARTMENT
WHERE Fund < 20000.00 OR Fund > 50000.00;
Как видно из примера, значение 20000 и 50000 не включаются в NOT BETWEEN.
Значение NULL в [NOT] BETWEEN. Если левый операнд равен NULL , то оператор возвращает значение UNKNOWN и это значит, что такая строка не удовлетворяет условию.
Оператор like
Оператор LIKE используется для сравнения строки символов со значением, заданным в виде шаблона. Он имеет следующий синтаксис:
где:
char1 |
Значение, сравниваемое с шаблоном. Это значение должно иметь типы CHAR или VARCHAR2. |
NOT |
Дает отрицание от указанного справа условия, возвращает FALSE, если условие оценивается в TRUE, и TRUE, если условие равно FALSE. |
char2 |
Шабон, с которым сравнивается строка char1. Шаболон имеет тип CHAR или VARCHAR2 и может иметь специальные символы шаблона «%» и «_». |
ESCAPE |
Указывает один символ в качестве символа escape. Символ escape может использоваться для того, чтобы Oracle интерпретировал % или _ буквально, а не в качестве символа шаблона. Если вы хотите найти строки, содержащие escape-символ, то его следует указать дважды. Например, если escape-символ равен '/', то для нахождения строки 'client/server' следует указать 'client//server'. |
В то время как оператор равенства (=) приводит к точному сравнению двух строковых значений, оператор LIKE сравнивает первое строковое значение со вторым (шаблоном) с учетом задаваемых символов шаблона. Отметим, что при сравнении по оператору LIKE правило дополнения пробелами не используется.
С помощью оператора LIKE левое значение сравнивается именно с шаблоном, а не с константой. Шаблон должен следовать за ключевым словом LIKE.
Пример 12 – Оператор Like:Выдать зарплату преподавателей, чьи имена начинаются на 'SM':
SELECT Salary
FROM TEACHER
WHERE UPPER(Name) LIKE 'SM%';
В следующем запросе используется оператор = , а не LIKE, поэтому производится поиск преподавателей с именами 'SM%':
SELECT Salary
FROM TEACHER
WHERE UPPER(Name) = 'SM%';
В следующем запросе, как и в предыдущем производится поиск всех преподавателей с именами 'SM%'. Oracle интерпретирует 'SM%' в качестве текстового литерала, а не шаблона, так как он предшествует оператору LIKE:
SELECT Salary
FROM TEACHER
WHERE 'SM%' LIKE UPPER(Name);
Семантика специальных символов шаблона следующая:
Символ подчеркивания (_) в шаблоне соответствует точно одному любому символу в сравниваемом значении.
Символ процента (%) в шаблоне соответствует нулю или более символам в сравниваемом значении. Отметим, что шаблон '%' не соответствует значению NULL.
Прописные и строчные буквы в шаблоне. Регистр букв является существенным во всех операторах сравнения строк, включая операторы LIKE и равенство (=). Чтобы ваше условие не зависело от регистра, используйте функцию UPPER(), как это приведено ниже:
UPPER(ename) LIKE 'SM%'
Фраза ESCAPE. Вы можете включить в строку шаблона символы "%" или "_", используя фразу ESCAPE. ESCAPE определяет escape-символ. Если escape-символ встречается в шаблоне перед символами "%" или "_", Oracle интерпретирует такой символ в шаблоне буквально, а не как специальный символ шаблона.
Пример 13 – LIKE с ESCAPE:Для поиска преподавателей с шаблоном 'A_B' в их имени можно записать:
SELECT Name
FROM TEACHER
WHERE UPPER(Name) LIKE '%A\_B%' ESCAPE '\';
Здесь ESCAPE определяет символ обратной косой черты (\) в качестве escape-символа. В шаблоне escape-символ предшествует символу подчеркивания (_), поэтому он рассматривается как обычный символ.
Шаблон без %. Если шаблон не содержит символа "%", то условие оказывается равным TRUE только если оба операнда имеют одинаковую длину.
Значение NULL. Если аргумент справа равен NULL, то условие LIKE дает UNKNOWN и это означает, что соответствующая строка не удовлетворяет оператору LIKE.