题
我们都知道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
不隶属于 StackOverflow