Введение в стандарты языка баз данных SQL

       

Численные выражения


Численное выражение - это выражение, значение которого относится к числовому типу данных. По сути дела, численные выражения SQL/92 являются не очень большим расширением арифметических выражений SQL/89. Вот формальный синтаксис численного выражения:

<numeric value expression> ::= <term> |<numeric value expression> <plus sign> <term> |<numeric value expression> <minus sign> <term> <term> ::= <factor> |<term> <asterisk> <factor> |<term> <solidus> <factor> <factor> ::= [ <sign> ] <numeric primary> <numeric primary> ::= <value expression primary> |<numeric value function>

Пояснения: Следует обратить внимание на то, что в отличие от SQL/89 в численных выражениях SQL/92 первичная составляющая является либо первичным численным выражением (см. выше), либо вызовом функции с численным значением. Из этого, в частности, следует, что в численные выражения могут входить выражения с переключателем и операторы преобразования типов.

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

<numeric value function> ::= <position expression> |<extract expression> |<length expression> <position expression> ::= POSITION <left paren> <character value expression> IN <character value expression> <right paren> <length expression> ::= <char length expression> |<octet length expression> |<bit length expression> <char length expression> ::= { CHAR_LENGTH | CHARACTER_LENGTH } <left paren> <string value expression> <right paren> <octet length expression> ::= OCTET_LENGTH <left paren> <string value expression> <right paren> <bit length expression> ::= BIT_LENGTH <left paren> <string value expression> <right paren> <extract expression> ::= EXTRACT <left paren> <extract field> FROM <extract source> <right paren> <extract field> ::= <datetime field> |<time zone field> <time zone field> ::= T IMEZONE_HOUR |TIMEZONE_MINUTE <extract source> ::= <datetime value expression> |<interval value expression>

Пояснения: Что касается выражений позиции и длины по отношению к символьным и битовым строкам, мы достаточно подробно обсуждали их при рассмотрении соответствующих типов данных; здесь приводится только уточненный синтаксис. Выражение извлечения поля из значений дата-время или интервал позволяет получить в виде точного числа с масштабом 0 значение любого поля (года, месяца, дня и т.д.). Какой конкретный тип точных чисел будет выбран - определяется в реализации.



Содержание раздела