Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
348.doc
Скачиваний:
12
Добавлен:
30.04.2022
Размер:
2.67 Mб
Скачать

Предикат between

Предикат between имеет следующий синтаксис:

<between предикат> ::=

<значение выражения>

[NOT] BETWEEN <значение выражения> AND <значение выражения>

Результат "x BETWEEN y AND z" тот же самый, что результат "x >= y AND x <= z". Результат "x NOT BETWEEN y AND z" тот же самый, что результат "NOT (x BETWEEN y AND z)".

Предикат in

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

<in предикат> ::=

<значение выражения> [NOT] IN

{<подзапрос> | (<список значений>)}

<список значений> ::=

<спецификация значения>

{,<спецификация значения>}...

Типы левого операнда и значений из списка правого операнда должны быть сравнимыми.

Значение предиката равно true в том и только в том случае, когда значение левого операнда совпадает хотя бы с одним значением списка правого операнда. Значение предиката "x NOT IN S" равно значению предиката "NOT (x IN S)".

Предикат like

Предикат like имеет следующий синтаксис:

<like предикат> ::=

<спецификация столбца> [NOT] LIKE <образец>

[ESCAPE <escape символ>]

<образец> ::= <спецификация значения>

<escape символ> ::= < спецификация значения>

Типы данных столбца левого операнда и образца должны быть типами символьных строк. В разделе ESCAPE должен специфицироваться одиночный символ.

Значение предиката равно true, если шаблон является подстрокой заданного столбца. При этом если раздел ESCAPE отсутствует, то при сопоставлении шаблона со строкой производится специальная интерпретация двух символов шаблона: символ подчеркивания ("_") обозначает любой одиночный символ; символ процента ("%") обозначает последовательность произвольных символов произвольной длины (может быть нулевой).

Если же раздел ESCAPE присутствует и специфицирует некоторый одиночный символ x, то пары символов "x_" и "x%" представляют одиночные символы "_" и "%" соответственно.

Значение предиката like есть unknown, если значение столбца либо шаблона не определено.

Значение предиката "x NOT LIKE y ESCAPE z" совпадает со значением "NOT x LIKE y ESCAPE z".

Предикат null

Предикат null описывается синтаксическим правилом:

<null предикат> ::=

<спецификация столбца> IS [NOT] NULL

Этот предикат всегда принимает значения true или false. При этом значение "x IS NULL" равно true тогда и только тогда, когда значение x не определено. Значение предиката "x NOT IS NULL" равно значению "NOT x IS NULL".

Предикат с квантором

Предикат с квантором имеет следующий синтаксис:

<предикат с квантором> ::=

<значение выражения> <операция> <квантор> <подзапрос>

<квантор> ::=

<все> | <какой-нибудь>

<все> ::= ALL

<какой-нибудь> ::= SOME | ANY

Обозначим через x результат вычисления арифметического выражения левой части предиката, а через S результат вычисления подзапроса.

Предикат "x <операция> ALL S" имеет значение true, если S пусто или значение предиката "x <операция> s" равно true для каждого s, входящего в S. Предикат "x <операция> ALL S" имеет значение false, если значение предиката "x <операция> s" равно false хотя бы для одного s, входящего в S. В остальных случаях значение предиката "x <операция> ALL S" равно unknown.

Предикат "x <операция> SOME S" имеет значение false, если S пусто или значение предиката "x <операция> s" равно false для каждого s, входящего в S. Предикат "x <операция> SOME S" имеет значение true, если значение предиката "x <операция> s" равно true хотя бы для одного s, входящего в S. В остальных случаях значение предиката "x <операция> SOME S" равно unknown.

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