Выравнивание числовых данных по правому краю в SQL Server

StackOverflow https://stackoverflow.com/questions/56950

  •  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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top