Справка по SQL | страница 30



:


>SELECT name, STUFF(name + SPACE(6), 6, LEN(name), '_'+STR(launched,4)) FROM Ships

Функции LTRIM и RTRIM


LTRIM (<строковое выражение)

RTRIM (<строковое выражение)

отсекают соответственно лидирующие и конечные пробелы строкового выражения, которое неявно приводится к типу VARCHAR.

Пусть требуется построить такую строку: имя пассажира_идентификатор пассажира для каждой записи из таблицы Passenger. Если мы напишем


>SELECT name + '_' + CAST(id_psg AS VARCHAR) FROM Passenger,


то в результате получим что-то типа:

A _1

Это связано с тем, что столбец name имеет тип CHAR(30). Для этого типа короткая строка дополняется пробелами до заданного размера (у нас 30 символов). Здесь нам как раз и поможет функция RTRIM:


>SELECT RTRIM(name) + '_' + CAST(id_psg AS VARCHAR) FROM Passenger

Функции LOWER и UPPER


LOWER(<строковое выражение)


преобразуют все символы аргумента соответственно к нижнему и верхнему регистру. Эти функции оказываются полезными при сравнении регистрозависимых строк.

Пара интересных функций SOUNDEX и DIFFERENCE:

SOUNDEX(<строковое выражение)

DIFFERENCE (<строковое выражение_1, <строковое выражение_2)

Позволяют определить близость звучания слов. При этом SOUNDEX возвращает четырехсимвольный код, используемый для сравнения, а DIFFERENCE собственно и оценивает близость звучания двух сравниваемых строковых выражений. Поскольку эти функции не поддерживают кириллицы, отсылаю интересующихся к BOL за примерами их использования.

В заключение приведем функции и несколько примеров использования юникода.

Функция UNICODE


UNICODE (<строковое выражение)

возвращает юникод первого символа строкового выражения.

Функция NCHAR


NCHAR (<целое)

возвращает символ по его юникоду. Несколько примеров.


>SELECT ASCII('а'), UNICODE('а')


возвращает код ASCII и юникод русской буквы "а": 224 и 1072.


>SELECT CHAR(ASCII('а')), CHAR(UNICODE('а'))


Пытаемся восстановить символ по его коду. Получаем "а" и NULL. NULL-значение возвращается потому, что кода 1072 нет в обычной кодовой таблице.


>SELECT CHAR(ASCII('а')), NCHAR(UNICODE('а'))


Теперь все нормально, в обоих случаях "а". Наконец,


>SELECT NCHAR(ASCII('а'))


даст "a", т.к. юникод 224 соответствует именно этой букве.

Приведенные здесь примеры можно выполнить непосредственно на сайте, установив флажок "Без проверки" на странице с упражнениями на SELECT.


Операторы модификации данных



Язык манипуляции данными (DML - Data Manipulation Language) помимо оператора SELECT, осуществляющего извлечение информации из базы данных, включает операторы, изменяющие состояние данных. Этими операторами являются: