loading..
Русский    English
05:59
листать

Функции 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

Тэги:
ALL AVG battles CASE CAST CHAR CHARINDEX classes COALESCE Convert COUNT CTE DATEDIFF DATEPART DATETIME DELETE DISTINCT EXCEPT EXISTS EXTRACT FROM FULL JOIN GROUP BY Guadalcanal HAVING IN INNER JOIN insert INTERSECT ISNULL laptop LEFT LEFT OUTER JOIN LEN maker MAX MIN MySQL NOT IN NULL ORDER BY Outcome outcomes OVER PARTITION BY pc PIVOT PostgreSQL printer product Больше тэгов
Учебник обновлялся
несколько дней назад
©SQL-EX,2008 [Развитие] [Связь] [О проекте] [Ссылки] [Team]
Перепечатка материалов сайта возможна только с разрешения автора.
Rambler's Top100