Строковые функции
Эти функции используют в качестве аргумента строку символов, а в качестве результата возвращают также символьную строку или числовое значение.
Для выделения подстроки указанной длины из строкового выражения, начиная с заданной позиции, используется функция SUBSTRING, имеющая следующий формат:
SUBSTRING (<строковое_выражение> FROM позиция[FOR длина]), где позиция – позиция, начиная с которой выполняется выделение, например 1 для первого символа в строке;
длина – количество выделяемых символов. Например, для вывода номеров лицевых счетов абонентов и первых трех символов их фамилии можно использовать следующий запрос:
SELECT A.AccountCD, SUBSTRING (A.Fio FROM 1 for 3) AS Fio3 FROM Abonent A;. Результат выполнения запроса представлен на рис. 3.19.
|
ACCOUNTCD |
FIO3 АКС МИЩ КОН ТУЛ СВИ СТА ШМА МАР ДЕН ЛУК ШУБ ТИМ |
|
005488 |
|
|
115705 |
|
|
015527 |
|
|
443690 |
|
|
136159 |
|
|
443069 |
|
|
136160 |
|
|
126112 |
|
|
136169 |
|
|
080613 |
|
|
080047 |
|
|
080270 |
Рис. 3.19. Результат работы функции SUBSTRING
Следует отметить, что в качестве аргументов позиция и длинав SUBSTRING можно использовать и выражения (в том числе со скалярными функциями, возвращающими числовой результат). Также в качестве аргументов SUBSTRING могут использоваться подзапросы, возвращающие единственное значение (<скалярный_подзапрос>).
Следует учесть, что длина результата будет такой же, как и длина первого аргумента (<строковоевыражение>, из которого выделяются символы). Длина поля Fio таблицы Abonent равна 20 [VARCHAR(20)], длина нового поля будет также иметь длину 20, а не 3 символа.
Для выделения строки в обратной последовательности (начиная с конца) используется функция REVERSE. Функция имеет следующий формат: REVERSE (<строковое_ выражение>).
Например, для вывода информации об абонентах, имеющих инициалы E.B., можно испрользовать следующий запрос: SELECT * FROM Abonent
WHERE REVERSE (Fio) STARTING WITH REVERSE ('Е.В.');. Результат выполнения запроса представлен на рис. 3.20.
предыдущаяследующая