loading..
Русский    English
19:23
листать

Функции STR, SPACE, LTRIM и RTRIM

Функция STR() преобразует число к его символьному представлению:

  1. STR(число с плавающей точкой [, длина [, число десятичных знаков ] ] )

При этом преобразовании выполняется округление, а длина задает длину результирующей строки. Например,

STR(3.3456, 5, 1) 3.3
STR(3.3456, 5, 2) 3.35
STR(3.3456, 5, 3) 3.346
STR(3.3456, 5, 4) 3.346

Обратите внимание, что если полученное строковое представление числа меньше заданной длины, то добавляются лидирующие пробелы. Если же результат больше заданной длины, то усекается дробная часть (с округлением); в случае же целого числа получаем соответствующее число звездочек «*»:

  1. STR(12345,4,0) ****

Кстати, по умолчанию используется длина в 10 символов. Имея в виду, что год представлен четырьмя цифрами, напишем:

Консоль
Выполнить
  1. SELECT name, STUFF(name, 6, LEN(name), '_'+STR(launched, 4))
  2. FROM Ships

Уже почти все правильно. Осталось учесть случай, когда число символов в имени менее 6, так как в этом случае функция STUFF дает NULL. Ну что ж, вытерпим до конца мучения, связанные с использованием этой функции в данном примере, попутно применив еще одну строковую функцию.

Добавим конечные пробелы, чтобы длина имени была заведомо больше 6. Для этого имеется специальная функция SPACE(число пробелов):

Консоль
Выполнить
  1. SELECT name, STUFF(name + SPACE(6), 6, LEN(name), '_'+STR(launched,4))
  2. FROM Ships

Функции LTRIM(строковое выражение) и RTRIM(строковое выражение) Отсекают, соответственно, лидирующие и конечные пробелы строкового выражения, которое неявно приводится к типу varchar.

Пусть требуется построить такую строку:

<имя пассажира>_<идентификатор пассажира>

на базе таблицы Passenger. Если мы напишем:

Консоль
Выполнить
  1. SELECT name + '_' + CAST(id_psg AS VARCHAR)
  2. FROM Passenger

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

A _1

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

Консоль
Выполнить
  1. SELECT RTRIM(name) + '_' + CAST(id_psg AS VARCHAR)
  2. FROM Passenger

Bookmark and Share
Тэги:
ALL AND AUTO_INCREMENT AVG battles CASE CAST CHAR CHARINDEX CHECK classes COALESCE Convert COUNT CROSS APPLY CTE DATEDIFF DATENAME DATEPART DATETIME DDL DEFAULT DELETE DISTINCT DML EXCEPT EXISTS EXTRACT FROM FULL JOIN GROUP BY Guadalcanal HAVING IDENTITY IN INNER JOIN insert INTERSECT IS NOT NULL ISNULL laptop LEFT LEFT OUTER JOIN LEN maker MAX MIN MONTH MySQL NOT Больше тэгов
Учебник обновлялся
вчера
©SQL-EX,2008 [Развитие] [Связь] [О проекте] [Ссылки] [Team]
Перепечатка материалов сайта возможна только с разрешения автора.
Rambler's Top100