我们都知道T-SQL的字符串操作能力有时很不理想...

我有一个数字领域,需要输出的在T-SQL作为一种权利对准文本列。例如:

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

你会怎么去那?一个很好的解决方案应该是明确而紧凑,但是记得有这样的事,因为"太聪明"。

我同意这是错误的地方这样做,但有时候我们坚持的力量超过我们控制。

谢谢你。

有帮助吗?

解决方案

STR功能 有一个可选择的长度参数以及大量的小数位数的一个。

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可以使用的以下代码(这个代码假定你有没有数字都超过40chars):

SELECT REPLICATE(' ', 40 - LEN(CAST(numColumn as varchar(40)))) + 
CAST(numColumn AS varchar(40)) FROM YourTable
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top