Предикат BETWEEN. Предикат IN. 


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



ЗНАЕТЕ ЛИ ВЫ?

Предикат BETWEEN. Предикат IN.



 

Предикат BETWEEN  
  Синтаксис:
  1. BETWEEN::=
  2. <Проверяемое выражение> [NOT] BETWEEN
  3. <Начальное выражение> AND <Конечное выражение>
Предикат BETWEEN проверяет, попадают ли значения проверяемого выражения в диапазон, задаваемый пограничными выражениями, соединяемыми служебным словом AND. Естественно, как и для предиката сравнения, выражения в предикате BETWEEN должны быть совместимы по типам. Предикат
  1. exp1 BETWEEN exp2 AND exp3
равносилен предикату
  1. exp1 >= exp2 AND exp1 <= exp3
А предикат
  1. exp1 NOT BETWEEN exp2 AND exp3
равносилен предикату
  1. NOT (exp1 BETWEEN exp2 AND exp3)
Если значение предиката exp1 BETWEEN exp2 AND exp3 равно TRUE, в общем случае это отнюдь не означает, что значение предиката exp1 BETWEEN exp3 AND exp2 тоже будет TRUE, так как первый будет интерпретироваться как предикат:
  1. exp1 >= exp2 AND exp1 <= exp3
а второй как:
  1. exp1 >= exp3 AND exp1 <= exp2
Пример 5.2.3 Найти модель и частоту процессора компьютеров стоимостью от $400 до $600:
  1. SELECT model, speed
  2. FROM PC
  3. WHERE price BETWEEN 400 AND 600;

 

Предикат IN  
  Синтаксис:
  1. IN::=
  2. <Проверяемое выражение> [NOT] IN (<подзапрос>)
  3. | (<выражение для вычисления значения>,...)
ПредикатIN определяет, будет ли значение проверяемого выражения обнаружено в наборе значений, который либо явно определен, либо получен с помощью табличного подзапроса. Здесь табличный подзапрос это обычный оператор SELECT, который создает одну или несколько строк для одного столбца, совместимого по типу данных со значением проверяемого выражения. Если целевой объект эквивалентен хотя бы одному из указанных в предложении IN значений, истинностное значение предиката IN будет равно TRUE. Если для каждого значения Х в предложении IN целевой объект <> X, истинностное значение будет равно FALSE. Если подзапрос выполняется, и результат не содержит ни одной строки (пустая таблица), предикат принимает значение FALSE. Когда не соблюдается ни одно из упомянутых выше условий, значение предиката равно UNKNOWN. Пример 5.2.4 Найти модель, частоту процессора и объем жесткого диска тех компьютеров, которые комплектуются накопителями 10 или 20 Гбайт:
  1. SELECT model, speed, hd
  2. FROM PC
  3. WHERE hd IN (10, 20);
 
     
     
     
     

 

Пример 5.2.5

Найти модель, частоту процессора и объем жесткого диска компьютеров, которые комплектуются накопителями 10 Гбайт или 20 Гбайт и выпускаются производителем А:

  1. SELECT model, speed, hd
  2. FROM PC
  3. WHERE hd IN (10, 20) AND
  4. model IN (SELECT model
  5. FROM product
  6. WHERE maker = 'A'
  7. );
 
     
     
     

Предикат LIKE.

Предикат LIKE стр. 1  
  Синтаксис:
  1. LIKE::=
  2. <Выражение для вычисления значения строки>
  3. [NOT] LIKE <Выражение для вычисления значения строки>
  4. [ESCAPE <символ>]
Предикат LIKE сравнивает строку, указанную в первом выражении, для вычисления значения строки, называемого проверяемым значением, с образцом, который определен во втором выражении для вычисления значения строки. В образце разрешается использовать два трафаретных символа:
  • символ подчеркивания (_), который можно применять вместо любого единичного символа в проверяемом значении;
  • символ процента (%) заменяет последовательность любых символов (число символов в последовательности может быть от 0 и более) в проверяемом значении.
Если проверяемое значение соответствует образцу с учетом трафаретных символов, то значение предиката равно TRUE. Ниже приводится несколько примеров написания образцов.
 
'abc%' Любые строки, которые начинаются с букв «abc»
'abc_' Строки длиной строго 4 символа, причем первыми символами строки должны быть «abc»
'%z' Любая последовательность символов, которая обязательно заканчивается символом «z»
'%Rostov%' Любая последовательность символов, содержащая слово «Rostov» в любой позиции строки

Пример 5.4.1

Найти все корабли, имена классов которых заканчиваются на букву ‘о’

  1. SELECT *
  2. FROM Ships
  3. WHERE class LIKE '%o';

Результатом выполнения запроса будет следующая таблица:

 
Haruna Kongo  
Hiei Kongo  
Kirishima Kongo  
Kongo Kongo  
Musashi Yamato  
Yamato Yamato  

Пример 5.4.2

Найти все корабли, имена классов которых заканчиваются на букву ‘о’, но не на ‘go’

  1. SELECT *
  2. FROM Ships
  3. WHERE class NOT LIKE '%go' AND
  4. class LIKE '%o';
 
Musashi Yamato  
Yamato Yamato  

Если искомая строка содержит трафаретный символ, то следует задать управляющий символ в предложении ESCAPE. Этот управляющий символ должен использоваться в образце перед трафаретным символом, сообщая о том, что последний следует трактовать как обычный символ. Например, если в некотором поле следует отыскать все значения, содержащие символ «_», то шаблон ‘%_%’ приведет к тому, что будут возвращены все записи из таблицы. В данном случае шаблон следует записать следующим образом:

  1. '%#_%' ESCAPE '#'

Для проверки значения на соответствие строке «25%» можно воспользоваться таким предикатом:

  1. LIKE '25|%' ESCAPE '|'

Истинностное значение предиката LIKE присваивается в соответствии со следующими правилами:

 



Поделиться:


Читайте также:




Последнее изменение этой страницы: 2017-01-25; просмотров: 217; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.189.177 (0.005 с.)