Выравнивание числовых данных по правому краю в SQL Server
-
09-06-2019 - |
Вопрос
Мы все знаем, что возможности T-SQL по манипулированию строками иногда оставляют желать лучшего...
У меня есть числовое поле, которое необходимо вывести в T-SQL в виде текстового столбца с выравниванием по правому краю.Пример:
Value
----------
143.55
3532.13
1.75
Как бы вы это сделали?Хорошее решение должно быть ясным и компактным, но помните, что есть такое понятие, как «слишком умное».
Я согласен, что это неподходящее место для этого, но иногда нас останавливают силы, находящиеся вне нашего контроля.
Спасибо.
Решение
А Функция СТР имеет необязательный аргумент длины, а также число десятичных знаков.
SELECT STR(123.45, 6, 1)
------
123.5
(1 row(s) affected)
Другие советы
Самый простой способ — нажать влево:
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)
Если вы ДОЛЖНЫ сделать это в SQL, вы можете использовать следующий код (этот код предполагает, что у вас нет чисел длиной более 40 символов):
SELECT REPLICATE(' ', 40 - LEN(CAST(numColumn as varchar(40)))) +
CAST(numColumn AS varchar(40)) FROM YourTable