Функция INSTR используется для поиска заданного множества символов в строке и возвращает позицию, в которой данное множество символов встретилось. Синтаксис соответствующего оператора следующий.
INSTR(имя строки, 'множество символов',
[ начальная позиция поиска [ , номер появления ] ]);
Пример______________________________Значение_______________
SELECT INSTR (STATE, ' I ', 1, 1) Этот оператор SQL для каждого названия
FROM EMPLOYEE_TBL; штата из таблицы EMPLOYEE_TBL возвраща-
ет номер позиции, в которой первый раз
встречается буква I
SELECT PROD_DESC,
INSTR(PROD_DESC,'A',1,1)
FROM PRODUCTSJTBL;
PROD_DESC INSTR(PROD_DESC, 'A',1,1)
КОСТЮМ ВЕДЬМЫ О
ПЛАСТИКОВЫЕ ТЫКВЫ 3
ИСКУССТВЕННЫЕ ПАРАФИНОВЫЕ ЗУБЫ 16
ФОНАРИ 4
КОСТЮМЫ В АССОРТИМЕНТЕ 11
СЛАДКАЯ КУКУРУЗА 3
ТЫКВЕННЫЕ КОНФЕТЫ О
ПЛАСТИКОВЫЕ ПАУКИ 3
МАСКИ В АССОРТИМЕНТЕ 2
ЦЕПОЧКА ДЛЯ КЛЮЧЕЙ 7
ПОЛОЧКА ИЗ ДУБА 7
11 строк выбраны.
Обратите внимание на то, что в том случае, когда символ А в строке не найден, для позиции возвращается значение 0.
Функция LTRIM
Функция LTRIM представляет еще одну возможность для выделения части строки. Эта функция относится к тому же семейству, что и функция SUBSTRING. Функция LTRIM обрезает заданное множество символов с начала строки.
Синтаксис соответствующего оператора следующий.
LTRIM(строка символов, [ , 'множество символов' ]);
Пример_________________________________Значение___________
SELECT LTRIM(FIRST_NAME, ' LES') Этот оператор SQL обрезает символы
LES FROM CUSTOMERJTBL в начале всех имен LESLIE
WHERE FIRST_NAME = 'LESLIE';
SELECT POSITION, LTRIM(POSITION,'SALES')
FROM EMPLOYEE_PAY_TBL;
POSITION LTRIM(POSITION,
MARKETING MARKETING
TEAM LEADER TEAM LEADER
SALES MANAGER MANAGER
SALESMAN MAN
SHIPPER HIPPER
SHIPPER HIPPER
6 строк выбраны.
В строке SHIPPER была обрезана буква S, хотя эта строка и не содержит подстроку SALES. В данном случае первые четыре символа строки SALES были проигнорированы. Искомые символы должны встречаться в строке именно в заданном порядке и находиться с самого левого края строки. Другими словами, функция LTRIM срезает в строке все символы слева до последнего символа искомой строки включительно.
Функция RTRIM
Подобно LTRIM, функция RTRIM обрезает заданное множество символов в конце строки.
Синтаксис соответствующего оператора следующий.
RTRIM(CTpoKa символов, [ , 'множество символов' ]);
Пример_______________________________________Значение______
SELECT RTRIM(FIRST_NAME, 'ON' ) Этот оператор SQL возвращает имя
FROM EMPLOYEEJTBL BRANDON и обрезает символы ON в конце,
WHERE FIRST_NAME = ' BRANDON ' ; остается только BRAND
SELECT POSITION, RTRIM(POSITION,'ER')
FROM EMPLOYEE_PAY_TBL;
POSITION RTRIM(POSITION,
MARKETING MARKETING
TEAM LEADER TEAM LEAD
SALES MANAGER SALES MANAG
ALESMAN SALESMAN
SHIPPER SHIPP
SHIPPER SHIPP
6 строк выбраны.
Здесь строка ER была обрезана в конце всех подходящих строк.
Функция DECODE
Функция DECODE к стандартным функциям ANSI не относится - по крайней мере, на момент написания данной книги, - но ее использование обсуждается здесь ввиду предоставляемых ею больших возможностей. Эта функция имеется в SQLBase, Oracle и, возможно, других реализациях SQL. Функция DECODE используется для поиска строк по заданному значению или строке, и если строка найдена, в результатах запроса отображается другая заданная строка.
Синтаксис соответствующего оператора следующий.
DECODE(имя столбца, 'искомая1', 'возвращаемая1'
[,'искомая2', 'возвращаемая2', 'значение по умолчанию']);
Пример____________________________Значение________________
SELECT DECODE (LAST_NAME, Этот запрос извлекает все фамилии из таблицы
'СМИТ', 'ДЖОНС', 'ДРУГОЕ') EMPLOYEE_TBL, причем вместо фамилии
FROM EMPLOYEE_TBL; СМИТ отображается ДЖОНС, а вместо любой
другой - значение по умолчанию, которым в данном
случае является значение ДРУГОЕ
В следующем примере функция DECODE используется по отношению к значениям столбца CITY таблицы EMPLOYEEJTBL.
SELECT CITY,
DECODE(CITY,'INDIANAPOLIS', 'INDY',
'GREENWOOD', 'GREEN', 'OTHER')
FROM EMPLOYEE _TBL;
CITY DECOD
GREENWOOD GREEN
INDIANAPOLIS INDY
WHITELAND OTHER
INDIANAPOLIS INDY
INDIANAPOLIS INDY
INDIANAPOLIS INDY
6 строк выбраны.
В результате вместо названия Индианаполиса отображается INDY, вместо Гринвуда отображается GREEN, а для любого другого города - OTHER.
Другие функции для работы со строками
В следующих разделах рассматриваются функции, о которых полезно знать. Опять же, эти функции оказываются общими для большинства основных реализаций SQL.
Выяснение длины значения
Для выяснения длины строки символов, числа, значения даты или выражения в байтах используется функция LENGTH.
Синтаксис соответствующего оператора следующий.
LENGTH(строка символов)
Пример____________________________Значение________________
SELECT LENGTH (LAST_NAME) Этот оператор SQL возвращает длину фами-
FROM EMPLOYEE_TBL; лии для каждого из служащих
SELECT PROD_DESC, LENGTH(PROD_DESC)
FROM PRODXCTS_TBL;
PROD_DESC LENGTH(PROD_DESC)
КОСТЮМ ВЕДЬМЫ 13
ПЛАСТИКОВЫЕ ТЫКВЫ 17
ИСКУССТВЕННЫЕ ПАРАФИНОВЫЕ ЗУБЫ 30
ФОНАРИ 6
КОСТЮМЫ В АССОРТИМЕНТЕ 22
СЛАДКАЯ КУКУРУЗА 16
ТЫКВЕННЫЕ КОНФЕТЫ 17
ПЛАСТИКОВЫЕ ПАУКИ 17
МАСКИ В АССОРТИМЕНТЕ 20
ЦЕПОЧКА ДЛЯ КЛЮЧЕЙ 18
ПОЛОЧКА ИЗ ДУБА 15
11 строк выбраны.
Функция NVL (замещение значения NULL)
Функция NVL используется для отображения значения некоторого выражения, когда значение другого заданного выражения оказывается NULL Функцию NVL можно использовать с данными большинства типов, однако, проверяемое значение и замещающее его значение должны быть одного типа
Синтаксис соответствующего оператора следующий.
NVL('значение', 'замещающее значение')
Пример______________________________Значение______________
SELECT NVL (SALARY, '00000') Этот оператор SQL находит пустые значения
FROM EMPLOYEE_PAY_TBL; для зарплаты и заменяет их значением 00000
SELECT PAGER, NVL(PAGER,9999999999)
FROM EMPLOYBE_TBL;
PAGER NVL(PAGER,
9999999999
9999999999
3175709980 3175709980
8887345678 8887345678
9999999999
9999999999
6 строк выбраны.
Значение 9999999999 было подставлено только вместо значений NULL
Функция LPAD
Функция LPAD используется для добавления символов или пробелов в начало строки. Синтаксис соответствующего оператора следующий
LPAD(множество строк, число, символ)
В следующем примере в начало описаний товаров добавляются точки так, чтобы общее число символов в описании оказалось равным 33.
SELECT LPAD(PROD_DESC,33,'.')
PRODUCT FROM PRODICTS_TBL;
PRODUCT
.................... КОСТЮМ ВЕДЬМЫ
................ ПЛАСТИКОВЫЕ ТЫКВЫ
...ИСКУССТВЕННЫЕ ПАРАФИНОВЫЕ ЗУБЫ
........................... ФОНАРИ
........... КОСТЮМЫ В АССОРТИМЕНТЕ
................. СЛАДКАЯ КУКУРУЗА
................ ТЫКВЕННЫЕ КОНФЕТЫ
................ ПЛАСТИКОВЫЕ ПАУКИ
............ .МАСКИ В АССОРТИМЕНТЕ
............... ЦЕПОЧКА ДЛЯ КЛЮЧЕЙ
.................. ПОЛОЧКА ИЗ ДУБА
11 строк выбраны.
Функция RPAD
Функция RPAD используется для добавления символов или пробелов в конец строки Синтаксис соответствующего оператора следующий.
RPAD(множество строк, число, символ)
В следующем примере в конец описаний товаров добавляются точки так, чтобы общее число символов в описании оказалось равным 33
SELECT RPAD(PROD_DESC,33,'.')
PRODUCT FROM PRODICTSJTBL;
PRODUCT
КОСТЮМ ВЕДЬМЫ....................
ПЛАСТИКОВЫЕ ТЫКВЫ................
ИСКУССТВЕННЫЕ ПАРАФИНОВЫЕ ЗУБЫ...
ФОНАРИ...........................
КОСТЮМЫ В АССОРТИМЕНТЕ...........
СЛАДКАЯ КУКУРУЗА.................
ТЫКВЕННЫЕ КОНФЕТЫ................
ПЛАСТИКОВЫЕ ПАУКИ................
МАСКИ В АССОРТИМЕНТЕ.............
ЦЕПОЧКА ДЛЯ КЛЮЧЕЙ...............
ПОЛОЧКА ИЗ ДУБА..................
11 строк выбраны.
Функция ASCII
Функция ASCII возвращает ASCII-код самого левого символа в строке (ASCII расшифровывается как American Standard Code for Information Interchange - американский стандартный код для обмена информацией).
Синтаксис соответствующего оператора следующий.
ASCII(строка)
Например,
ASCII ('A') возвратит 65,
ASCII (' в') возвратит 66,
ASCII (' с') возвратит 67.
Математические функции
Математические функции для всех реализаций SQL стандартны. С помощью этих функций выполняются вычисления с числовыми значениями базы данных. Из наиболее используемых математических функций выделим следующие.
Абсолютное значение ABS Округление ROUND Квадратный корень SQRT Знак числа SIGN Возведение в степень POWER Целая часть и ближайшее целое сверху FLOOR, CEIL Экспонента ЕХР Тригонометрические функции SIN, cos, TAN Общий синтаксис большинства математических функций следующий.
ФУНКЦИЯ(выражение)
Функции преобразования
Функции преобразования используются для преобразования одних типов данных в другие. Например, может возникнуть необходимость преобразования символьных данных в числовые. Данные могут храниться в базе данных в символьном виде, но для использования их в вычислениях необходимо представить эти данные в виде чисел. Математические функции и вычисления не работают с символьными данными.