Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Часть 2 - все в одном.doc
Скачиваний:
6
Добавлен:
04.09.2019
Размер:
84.99 Кб
Скачать
  1. Назначение оператора 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%'

  1. Назначение операторов in и between. Примеры.

Оператор IN. Он проверяет вхождение аргумента слева во множество, задаваемое аргументом справа.

Пример 8. Оператор IN: Выдать типы лекций, читаемые в Mon, Tue или Wed:

SELECT Type

FROM LECTURE

WHERE UPPER(Day) IN ('MON', 'TUE', 'WED');

Любой оператор IN с множеством, представленным в виде литералов, имеет эквивалентное представление с использованием операторов OR. Например, предыдущий запрос имеет такую эквивалентную запись:

SELECT Type

FROM LECTURE

WHERE UPPER(Day) = 'MON' OR UPPER(Day) = 'TUE' OR UPPER(Day) = 'WED';

Оператор IN также эквивалентен оператору "=ANY" (см. далее).

Оператор NOT IN. Оператор NOT IN является отрицанием к IN.

Оператор 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 и это значит, что такая строка не удовлетворяет условию.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]