SELECT LOWER (LAST_NAME) Этот оператор изменяет регистр всех символов в
FROM EMPLOYEEJTBL, заданном столбце с верхнего на нижний
SELECT LOWER(CITY)
FROM EMPLOYEEJTBL;
LOWER(CITY)
greenwood
Indianapolis
whiteland
Indianapolis
indianapolis
indianapolis
6 строк выбраны.
Функции для выделения подстрок из строк имеются во всех реализациях SQL, но имена таких функций могут отличаться, как видно из следующих примеров для Oracle и SQL Server.
В Oracle синтаксис соответствующего оператора следующий.
SUBSTR(имя столбца, начальная позиция, длина)
В случае SQL Server синтаксис соответствующего оператора будет следующим.
SUBSTRING(имя столбца, начальная позиция, длина)
Как видите, отличаются только имена функций.
Пример__________________________________Значение___________
SELECT SUBSTRING (EMP_ID,1,3) Этот оператор SQL возвращает первые три
FROM EMPLOYEE_TBL; символа строки EMP_ID
SELECT SUBSTRING (EMP_ID,4,2) Этот оператор SQL возвращает четвертый
FROM EMPLOYEE_TBL; ипятый символы строки EMP_ID
SELECT SUBSTRING (EMP_ID,6,4) Этот оператор SQL возвращает символы
FROM EMPLOYEE_TBL; с шестого по девятый включительно
строки EMP_ID
Вот пример использования данной функции в SQL Server.
SELECT EMP_ID, SUBSTRING(EMP_ID,1,3)
FROM EMPLOYEE_TBL;
EMP__ID SUB
311549902 311
442346889 442
213764555 213
313782439 313
220984332 220
443679012 443
6 rows affected.
А вот пример использования данной функции в Oracle.
SELECT EMP_ID, SUBSTR(EMP_ID,1, 3)
FROM EMPLOYEEJTBL;
EMP_ID SUB
311549902 311
442346889 442
213764555 213
313782439 313
220984332 220
443679012 443
6 rows selected.
Обратите внимание на выводимые в этих двух случаях сообщения базы данных. В первом случае это 6 rows affected, а во втором - 6 rows selected. Оба сообщения имеют одинаковый смысл (6 строк выбраны), но такого рода отличия нередко можно увидеть при сравнении различных реализаций SQL.
Функция 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 представляет еще одну возможность для выделения части строки. Эта функция относится к тому же семейству, что и функция 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 срезает в строке все символы слева до последнего символа искомой строки включительно.
Подобно 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 к стандартным функциям 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.