() является
любым символом из определенного в реализации множества символов, отличным
от () и (). Если в
реализации индикатор конца строки является символом, он также должен быть
исключен из ().
Замечание: См. Формат для ()
в 5.3,
" ()".
Множество ()
должно включать все символы, отличные от () и
(), встречающиеся в терминальных продукциях
языка SQL, и символы знака процента и подчеркивания.
Общие правила
Нет.
5.2 ()
Функция
Определяет не неопределенное значение
Формат
::= | ::= '...' ::= | =| или (),
должно быть больше 0.
Если () опущена, то она предполагается
равной 1. Если () опущен, то предполагается
равным 0. Если опущена (), то значение
определяется в реализации.
() для
() не должен быть больше, чем
() для ().
CHARACTER специфицирует тип данных строк символов с длиной,
специфицируемой ().
NUMERIC специфицирует тип данных точных чисел с точностью и
масштабом, специфицируемыми через () и
().
DECIMAL специфицирует тип данных точных чисел с масштабом,
специфицируемым () и определяемой в
реализации точностью, равной или большей зна чения указанной
().
INTEGER специфицирует тип данных точных чисел с определенной в
реализации точностью и масштабом 0.
SMALLINT специфицирует тип данных точных чисел с масштабом 0 и
определенной в реализации точностью не большей, чем определенная в
реализации точность INTEGER.
FLOAT специфицирует тип данных приблизительных чисел с двоичной
точностью, равной или большей значения указанной
().
REAL специфицирует тип данных приблизительных чисел с определенной
в реализации точностью.
DOUBLE PRECISION специфицирует тип данных приблизительных чисел с
определенной в реализации точностью большей, чем определенная в реализации
точность для REAL.
Общие правила
Нет.
5.6 () и
) ()
Функция
Специфицируют одно или более значений, параметров или пе- ременных.
()
специфицирует значение, которое не выбирается из таблицы.
()
идентифицирует параметр или параметр и параметр-индикатор. Тип данных
параметра-индикатора должен быть типом точных чисел со шкалой 0.
Конкретный ()
параметров-индикаторов определяется в реализации.
()
идентифицирует переменную включающего языка или переменную включающего
языка и переменную-индикатор. Тип данных переменной-индикатора должен быть
определенным в реализации типом данных для параметров-индикаторов.
()
специфицирует параметр или переменную, которым может быть присвоено
значение.
()
должна содержаться в (). () должна со держаться во
().
Тип данных USER - это символьная строка длины, определенной в
реализации.
Общие правила
Если () содержит () и значение параметра-индикатора отрицательно, то значение,
специфицируемое () - не определенное. В противном случае значение,
специфицируемое () - это значение параметра, идентифицируемого ().
Если () содержит () и значение переменной-индикатора отрицательно, то значение,
специфицируемое () - не определенное. В противном случае значение,
специфицируемое () - это значение переменной, идентифицируемой ().
Значение, специфицируемое () -
это значение, представляемое этим ().
Значение, специфицируемое USER, равно (), указанному как
() (), содержащего (), выполнение которого вызвало вычисления
() USER.
()
Функция
Указание именованного столбца.
Формат
::= [.] ::=
|
Синтаксические правила
указывает именованный столбец. Смысл
указания столбца зависит от контекста.
Пусть C () в
().
Тогда:
a) Если ()
содержит (), то должна содержаться в области действия одного или более
(
) или (), равных (). Если таких
() или
()больше одного, то используется имя с наиболее
локальной областью действия. Таблица, ассоциированнаяс указанным (
) или
(), должнавключать столбец с () C.
b) Если () не
включает (), то она должна
содержаться в областидействия одного или более
() или ().Пусть фраза "возможные квалификаторы" обозначает
те (
) и (), для которых ассоциированныетаблицы включают столбец, () которого есть C. Должен существовать в
точности один возможный квалификатор с наиболее локальной областью
действия, и это (
) или () неявно используется.
Замечание: "Область действия"
(table name> или ()
специфицируется в 5.20
" ()", 6.2,
" (
)" , 8.5,
" ()" , 8.11,
" ()" и 8.12,
"()".
Если ()
содержится в (
) T
и область действия явно или неявно указанного
() () есть некоторый () или (
), содержащее (
) T, то () является "внешней ссылкой" на таблицу,
ассоциированную с этим ().
Пусть T обозначает таблицу, ассоциированную с явно или неявно специфицированным
() R. Тип данных () есть тип данных столбца C
таблицы T.
Общие правила
"C" или "R.C" ссылаются на столбец C данной
строки T.
5.8 ()
Функция
Специфицирует значение, получаемое применением функции к аргументу.
Формат
::= COUNT(*) | | ::= { AVG | MAX | MIN | SUM | COUNT } (DISTNICT ) ::= { AVG | MAX | MIN | SUM } ([ALL] )
Синтаксические правила
Аргумент COUNT(*) и источник аргумента () и () - это
таблица или группа сгруппированной таблицы в соответствии со спецификациями
в 5.19,
" (
)", 5.24,
" ()" и 5.25,
" ()".
Пусть R обозначает аргумент или источник аргумента
().
()
() и каждая () в () () должны недвусмысленно ссылаться на столбец R и не должны
ссылаться на столбец, порожденный из
().
() должно
включать (),
которая ссылается на столбец R, и не должно включать (). Если
() является
внешней ссылкой, то () не должно включать никаких операторов.
Замечание: "Внешняя ссылка" определяется в 5.7,
" ().
Если () содержит (), являющуюся внешней ссылкой, то () должна содержаться
в () ().
Замечание: "Внешняя ссылка" определяется в 5.7,
" ().
Пусть T тип данных значений, являющихся результатами вычисления
() или
().
Если указывается COUNT, то тип данных результата () - это тип
точных чисел с определенной в реализации точностью и масштабом 0.
Если указывается MAX или MIN, то тип данных результата есть T.
Если указывается SUM или AVG, то:
a) тип T не должен быть типом символьных строк.
b) если указывается SUM и T - тип точных чисел с масштабом S, то тип
данных результата - тип точных чисел с определенной в реализации точностью
и масштабом S.
c) если указывается AVG и T - тип точных чисел с масштабом S, то тип
данных результата - тип точных чисел с определенными в реализации
точностью и масштабом.
d) если T - тип приблизительных чисел, то тип результата - тип
приблизительных чисел с определенной в реализации точностью.
Общие правила
Аргументом
() является множество значений. Это множество
получается путем удаления неопределенных значений и всех избыточных
дублирующих значений из столбца R, на который ссылается ().
Аргументом
() является мультимножество значений. Это
мультимножество получается путем удаления всех неопределенных значений из
результата применения
() к каждой строке R. Указание или неуказание ALL
не влияет на смысл
().
Пусть S обозначает аргумент () или ().
Тогда:
a) Если задается
() COUNT, то результатом является мощность S.
b) Если задается функция COUNT(*), то результатом является мощность R.
c) Если задается функция AVG, MAX, MIN или SUM и S пусто, то результатом
является неопределенное значение.
d) Если задается MAX или MIN, то результатом является, соответственно,
максимальное или минимальное значение в S. Эти результаты определяются с
использованием правил сравнения, определенных в 5.11,
"".
e) Если задается SUM, то результатом является суммазначений в S. Сумма
должна быть в пределах диапазона значений типа данных результата.
f) Если задается AVG, то результатом является среднеезначение значений в
S. Сумма значений в S должнабыть в пределах диапазона значений типа данных
результата.
5.9 ()
Функция
Специфицирует значение.
Формат
::= | + | - ::= | * | / ::= [+|-] ::= | | | ( )
Синтаксические правила
(), включающее , не должно включать никаких двухместных операторов.
Первый ()
(), следующей за одноместным оператором, не должен быть
знаком плюс или минус.
Если тип данных ()
является типом символьных строк, то () не должно включать никаких
операторов. Типом данных результата является тип символьных строк.
Если тип данных обоих операндов оператора является типом точных
чисел, то тип данных результата является типом точных чисел с точностью и
масштабом, определяемыми следующим образом:
a) Пусть s1 и s2 - масштабы первого и второго операндов, соответственно.
b) Точность результата сложения и вычитания определяется в реализации, и
масштаб есть max(s1,s2).
c) Точность результата умножения определяется в реализации, и масштаб есть
s1+s2.
d) Точность и масштаб результата деления определяются в реализации.
Если тип данных какого-либо операнда оператора является типом
приблизительных чисел, то тип данных результата есть тип приблизительных
чисел. Точность результата определяется в реализации.
Общие правила
Если значение () является
неопределенным значением, то результатом () является неопределенное значение.
Если операторы не указаны, то результатом () является значение
указанного ().
Когда () применяется к строке таблицы, каждая ссылка на столбец
этой таблицы является ссылкой на значение этого столбца в этой строке.
Одноместные арифметические операторы + и - специфицируют
одноместный плюс и одноместный минус, соответственно. Одноместный плюс не
изменяет своего операнда. Одноместный минус изменяет знак своего операнда.
Двухместные арифметические операторы +, -, * и / специфицируют
сложение, вычитание, умножение и деление соответственно. Делитель не
должен быть равен 0.
Если типом результата арифметического оператора является тип целых
чисел, то:
a) Если оператор не оператор деления, то математический результат операции
должен быть точно представим с точностью и масштабом типа результата.
b) Если оператор - это оператор деления, то приближенный математический
результат операции, представленный с точностью и масштабом типа результата
не должен терять никаких лидирующих значащих цифр.
Первыми вычисляются выражения в скобках. Когда порядок вычисления
не определяется скобками, одноместные операторы применяются перед
операторами умножения и деления, операторы умножения и деления применяются
перед операторами сложения и вычитания, и операторы одного уровня
предшествования применяются слева направо.
5.10 ()
Функция
Специфицирует условие, для которого может быть вычислено истиностное значение "true", "false" или "unknown".
Формат
::= | | | | | |
Синтаксические правила
Нет.
Общие правила
Результат () получается его
применением к данной строке таблицы.
5.11 ()
Функция
Специфицирует сравнение двух значений.
Формат
::= { | } ::= = | | < | > | =
Синтаксические правила
Тип данных первого
() и () или
второго () должны быть сравнимыми.
Общие правила
Пусть x обозначает результат первого () и пусть y обозначает результат
() или второго (). Мощность
результата () не должна быть больше
единицы.
Если x или y являются неопределенными значениями или если
результат () пустой, то результатом
"x y" является unknown.
Если x и y являются не неопределенными значениями, то результатом
"x 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" есть unknown, если x и y являются
неопределенными значениями, в контекстах GROUP BY, ORDER BY и DISTINCT
неопределенное значение идентично или является дубликатом другого
неопределенного значения.
()
Функция
Специфицирует сравнение с интервалом.
Формат
::= [NOT] BETWEEN AND
Синтаксические правила
Типы данных всех трех
() должны быть сравнимыми.
Общие правила
Пусть x, y и z обозначают результаты первого, второго и третьего
(),
соответственно.
Результат "x BETWEEN y AND z" тот же самый, что и
результат "x >= y AND x