Sql Scholl
Распечатать страницу
Перейти на главную Карта сайта Отправить сообщение

Функции манипулирования данными

Функции манипулирования текстом

      В примере функций манипулирования текстом функция RTRIM () использовалась для удаления пробелов в конце значения столбца. Ниже приведен еще один пример, в котором используется функция UPPER ():

SELECT vend_name UPPER(vend_name) AS vend_name_upcase
FROM Vendors
ORDER BY vend_name;


vend_name          vend_name_upcase
---------------    ----------------------
Bear Emporium      BEAR EMPORIUM
Beras R Us         BERAS R US
Doll House Inc.    DOLL HOUSE INC.
Fun and Games      FUN AND GAMES
Furball Inc.       FURBALL INC.
Jouets et ours     JOUETS ET OURS

     Функция UPPER () преобразует текст в верхний регистр и, таким образом, в этом примере имя каждого изготовителя перечислено дважды: первый раз в таком виде, в каком оно хранится в таблице Vendors, а второй раз — будучи преобразованным в верхний регистр, в виде столбца vend_name_upcase. 

     Один элемент из таблицы ниже требует более подробного объяснения. SOUNDEX — это алгоритм, преобразующий текстовую строку в буквенно-цифровой шаблон, описывающий фонетическое представление данного текста. Функция SOUNDEX берет в расчет похожие по звучанию буквы и слоги, позволяя сравнивать строки не по тому, как они пишутся, а по тому, как они звучат. Хотя SOUNDEX не подпадает под основные концепции SQL, большинство СУБД осуществляют поддержку этой функции. 

 
Функция Описание
LEFT () (или функция под строки) Возвращает символы из левой части строки
LENGTH (а также DATALENGTH() ИЛИ LEN()) Возвращает длину строки
LOWER () Преобразует строку в нижний регистр
LTRIM () (LCASE () в Access) Удаляет пробелы в левой части строки
RIGHT () (или функция подстроки) Возвращает символы из правой части строки
RTRIM () Удаляет пробелы в правой части строки
SOUNDEX () Возвращает значение SOUNDEX строки
UPPER () (UCASE в Access) Преобразует текст строки в верхний регистр

Поддержка SOUNDEX

Функция SOUNDEX() не поддерживается Microsoft Access или PostgreSQL, поэтому следующий пример не будет работать в этих СУБД.

     Ниже приведён пример использования функции SOUNDEX (). Клиент Kids Place находится в таблице Customers и имеет контактное лицо Michael Green. Но что, если это опечатка и на самом деле контактное лицо пишется как Michael Green? Очевидно, поиск по корректному имени ничего не даст, это показано ниже:

SELECT cust_name cust_contract
FROM Customers
WHERE cust contract = 'Michael Green';


-----------------------------------------
cust_name                   cust_contract

      А теперь попробуйте выполнить поиск при помощи функции SOUNDEX (), чтобы найти все имена контактных лиц, которые звучат как Michael Green:

SELECT cust_name cust_contract
FROM Customers
WHERE SOUNDEX (cust_contract) = SOUNDEX ('Michael Green'); 



cust_name        custt_contract 
---------------  ----------------------
Kids Place       Michelle Green

     В этом примере в предложении WHERE используется функция SOUNDEX () для преобразования значения столбца cust_contact и искомой строки в их SOUNDEX-значения. Так как Michael Green и Michelle Green звучат одинаково, их SOUNDEX-значения совпадут и предложение WHERE корректно отфильтрует необходимые данные.