Правое выравнивание числовых данных в SQL Server - PullRequest
10 голосов
/ 11 сентября 2008

Мы все знаем, что возможности работы со строками в T-SQL иногда оставляют желать лучшего ...

У меня есть числовое поле, которое необходимо вывести в T-SQL в виде текстового столбца с выравниванием по правому краю. Пример:

Value
----------
   143.55
  3532.13
     1.75

Как бы вы поступили? Хорошее решение должно быть четким и компактным, но помните, что есть такая вещь, как «слишком умный».

Я согласен, что это не то место, чтобы делать это, но иногда мы застряли под силами вне нашего контроля.

Спасибо.

Ответы [ 3 ]

13 голосов
/ 11 сентября 2008

Функция STR имеет необязательный аргумент длины, а также число десятичных дробей.

SELECT STR(123.45, 6, 1)

------
 123.5

(1 row(s) affected)
1 голос
/ 11 сентября 2008

Самый простой способ - это набить левую сторону:

CREATE FUNCTION PadLeft(@PadString nvarchar(100), @PadLength int)
RETURNS nvarchar(200)
AS
begin
return  replicate(' ',@padlength-len(@PadString)) + @PadString
end
go
print dbo.PadLeft('123.456', 20)
print dbo.PadLeft('1.23', 20)
0 голосов
/ 11 сентября 2008

Если вы ДОЛЖНЫ сделать это в SQL, вы можете использовать следующий код (этот код предполагает, что у вас нет чисел, которые больше 40 символов):

SELECT REPLICATE(' ', 40 - LEN(CAST(numColumn as varchar(40)))) + 
CAST(numColumn AS varchar(40)) FROM YourTable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...