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

       

Выражения над строками


Выражения над строками - это выражения, значениями которых являются символьные или битовые строки. Соответствующие конструкции определяются следующим синтаксисом:

<string value expression> ::= <character value expression> <bit value expression> <character value expression> ::= <concatenation> <character factor> <concatenation> ::= <character value expression> |<concatenation operator> <character factor> <character factor> ::= <character primary> [ <collate clause> ] <character primary> ::= <value expression primary> <string value function> <bit value expression> ::= <bit concatenation> <bit factor> <bit concatenation> ::= <bit value expression> <concatenation operator> <bit factor> <bit factor> ::= <bit primary> <bit primary> ::= <value expression primary> <string value function>

Если не вдаваться в тонкости, смысл выражений над строками понятен из описания синтаксиса: единственная применимая для построения выражений операция - конкатенация, производящая "склейку" строк-операндов. Более важно то, что первичной составляющей выражения над строками может быть как первичное выражение, вычисляющее значение (см. выше), так и вызов функций, возвращающих строчные значения. Репертуар и синтаксис вызова таких функций определяются следующим синтаксисом:

<string value function> ::= <character value function> <bit value function> <character value function> ::= <character substring function> <fold> <form-of-use conversion> <character translation> <trim function> <character substring function> ::= SUBSTRING <left paren> <character value expression> FROM <start position> [ FOR <string length> ] <right paren> <fold> ::= { UPPER LOWER } <left paren> <character value expression> <right paren> <form-of-use conversion> ::= CONVERT <left paren> <character value expression> USING <form-of-use conversion name> <right paren> <character translation> ::= TRANSLATE <left paren> <character value expression> USING <translation name> <right paren> <trim function> ::= TRIM <left paren> <trim operands> <right paren> <trim operands> ::= [ [ <trim specification> ] [ <trim character> ] FROM ] <trim source> <trim source> ::= <character value expression> <trim specification> ::= LEADING TRAILING BOTH <trim character> ::= <character value expression> <bit value function> ::= <bit substring function> <bit substring function> ::= SUBSTRING <left paren> <bit value expression> FROM <start position> [ FOR <string length> ] <right paren> <start position> ::= <numeric value expression> <string length> ::= <numeric value expression>

Пояснения: Основные полезные функции - выделение подстроки (SUBSTRING) и замена малых букв на заглавные и наоборот (UPPER и LOWER) - мы упоминали при рассмотрении строчных типов. Как видно из описания синтаксиса функций, возвращающих строчные значения, для символьных строк имеются еще три функции: CONVERT, TRANSLATE и TRIM. По смыслу они все очень просты. Функция CONVERT меняет кодировку символов в заданной строке, причем репертуар символов не меняется. Способ задания правил перекодировки определяется в реализации. Функция TRANSLATE, наоборот, в соответствии с правилами трансляции "переводит" текстовую строку на другой язык (используя набор символов целевого алфавита). Кодировка не меняется. Функция TRIM "отсекает" последовательности указанного символа в начале, в конце или в конце и начале заданной строки.



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