右对齐SQL Server中的数字数据

时间:2008-09-11 15:47:04

标签: sql-server tsql

我们都知道T-SQL的字符串操作功能有时候还有很多不足之处......

我有一个数字字段,需要在T-SQL中作为右对齐文本列输出。例如:

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

你会怎么做?一个好的解决方案应该是清晰和紧凑的,但要记住有一个“太聪明”的事情。

我同意这是做错的地方,但有时我们会被我们无法控制的力量所困扰。

谢谢。

3 个答案:

答案 0 :(得分:13)

STR function有一个可选的长度参数以及一个小数位数。

SELECT STR(123.45, 6, 1)

------
 123.5

(1 row(s) affected)

答案 1 :(得分:1)

最简单的方法是左键填充:

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)

答案 2 :(得分:0)

如果必须在SQL中执行此操作,则可以使用以下代码(此代码假定您没有大于40个字符的数字):

SELECT REPLICATE(' ', 40 - LEN(CAST(numColumn as varchar(40)))) + 
CAST(numColumn AS varchar(40)) FROM YourTable