Доклад: Общие элементы SQL
<value expression> <comp op>
{<value expression> | <subquery>}
<comp op> ::=
= | <> | < | > | <= | >=
Синтаксические правила
- Тип данных первого <выражения, вырабатывающего результат> (<value expression>) и <подзапроса> (<subquery>) или второго <выражения, вырабатывающего значение> (<value expression>) должны быть сравнимыми.
Общие правила
- Пусть x обозначает результат первого <выражения, вырабатывающего значение> (<value expression>) и пусть y обозначает результат <подзапроса> (<subquery>) или второго <выражения, вырабатывающего значение> (<value expression>). Мощность результата <подзапроса> (<subquery>) не должна быть больше единицы.
- Если x или y являются неопределенными значениями или если результат <подзапроса> (<subquery>) пустой, то результатом "x <comp op> y" является unknown.
- Если x и y являются не неопределенными значениями, то результатом "x <comp op> y" является true или false: "x = y" есть true тогда и только тогда, когда x и y равны. "x <> y" есть true тогда и только тогда, когда x и y не равны. "x < y" есть true тогда и только тогда, когда x меньше, чем y. "x > y" есть true тогда и только тогда, когда x больше, чем y. "x <= y" есть true тогда и только тогда, когда x не больше, чем y. "x >= y" есть true тогда и только тогда, когда x не меньше, чем y.
- Числа сравниваются в соответствии с их алгебраическими значениями.
- Сравнение двух символьных строк определяется через сравнение <символов> (<character>) с одинаковыми порядковыми позициями. Если строки не имеют одинаковую длину, то сравнение производится с рабочей копией более короткой строки, дополненной справа пробелами <space> таким образом, чтобы она имела длину, равную длине другой строки.
- Две строки равны, если все <символы> (<character>) с одинаковыми порядковыми позициями совпадают. Если две строки не равны, то их отношение определяется на основе сравнения первой пары неравных <символов> (<character>) с левого конца строк. Это сравнение производится в соответствии с определенной в реализации последовательностью сопоставления.
- Хотя "x = y" есть unknown, если x и y являются неопределенными значениями, в контекстах GROUP BY, ORDER BY и DISTINCT неопределенное значение идентично или является дубликатом другого неопределенного значения.
<Предикат between> (<between predicate>)
Функция
Специфицирует сравнение с интервалом.
Формат
<between predicate> ::=
<value expression>
[NOT] BETWEEN <value expression> AND <value expression>
Синтаксические правила
- Типы данных всех трех <выражений, вырабатывающих значение> (<value expression>) должны быть сравнимыми.
Общие правила
- Пусть x, y и z обозначают результаты первого, второго и третьего <выражений, вырабатывающих значение> (<value expression>), соответственно.
- Результат "x BETWEEN y AND z" тот же самый, что и результат "x >= y AND x <= z".
- Результат "x NOT BETWEEN y AND z" тот же самый, что и результат "NOT (x BETWEEN y AND z)".
5.13 <Предикат in> (<in predicate>)
Функция
Специфицирует сравнение с квантором.
Формат
<in predicate> ::=
<value expression> [NOT] IN
{ <subquery> | (<in value list>) }
<in value list> ::=
<value specification>
{ ,<value specification> }...
Синтаксические правила
- Типы данных первого <выражения, вырабатывающего значение> (<value expression>) и <подзапроса> (<subquery>) или всех <выражений, вырабатывающих значение> (<value expression>) в <списке значений in> (<in value list>) должны быть сравнимыми.
Общие правила
- Пусть x обозначает результат <выражения, вырабатывающего значение> (<value expression>). Пусть S обозначает результат <подзапроса> (<subquery>) как в <предикате с квантором> (<quantified predicate>) или значения, определенные через <список значений in> (<in value list>), рассматриваемые как значения строк единственного столбца таблицы степени один.
- Результат "x IN S" тот же самый, что и результат "x = ANY S". Результат "x NOT IN S" тот же самый, что и результат "NOT (x IN S)".
5.14 <Предикат like> (<like predicate>)
Функция