Выражения, значениями которых являются символьные или битовые строки

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

string_value_expression ::= character_value_expression
| bit_value_expression

 

character_value_expression ::= сoncatenation
| character_factor

 

concatenation ::= character_value_expression || 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 || bit_primary

 

bit_primary ::= value_expression_primary
| string value function

 

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

string_value_function ::= character_value_function
| bit_value_function

 

character _value_function ::= SUBSTRING (character _value_expression
FROM start_position
[ FOR string_length ])
| SUBSTRING (character _value_expression
SIMILAR character _value_expression
ESCAPE character_value_expression)
| { UPPER | LOWER }
(character_value_expression)
| CONVERT (character_value_expression
USING conversion_name)
| TRANSLATE (character_value_expression)
USING translation_name)
| TRIM ([ {LEADING | TRAILING | BOTH} ]
[ character_value_expression ]
[ character_value_expression ])
| OVERLAY (character_value_expression
PLACING character_value_expression
FROM start_position
[ FOR string_length ])

 

bit _value_function ::= SUBSTRING (bit_value_expression
FROM start_position
[ FOR string_length ])

 

start_position ::= numeric_value_expression

 

string length ::= numeric_value_expression

 

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