loading..
Русский    English
20:40
листать

Функции 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 CONSTRAINT Convert COUNT CROSS APPLY CTE DATEADD DATEDIFF DATENAME DATEPART DATETIME DDL DEFAULT DELETE DISTINCT DML EXCEPT EXISTS EXTRACT FOREIGN KEY FROM FULL JOIN GROUP BY Guadalcanal HAVING IDENTITY IN INNER JOIN insert INTERSECT IS NOT NULL IS NULL ISNULL laptop LEFT LEFT OUTER JOIN LEN maker MAX Больше тэгов
Учебник обновлялся
несколько дней назад
©SQL-EX,2008 [Развитие] [Связь] [О проекте] [Ссылки] [Team]
Перепечатка материалов сайта возможна только с разрешения автора.
Rambler's Top100