我們都知道,T-SQL的字符串處理能力,有時極不理想多...右對齊文本在SQL Server
我有一個需要在T-SQL輸出作爲右對齊的數字字段文本列。例如:
Value
----------
143.55
3532.13
1.75
你會怎麼做呢?一個好的解決方案應該是清晰和緊湊的,但請記住有這樣一個「太聰明」的東西。
我同意這是做這件事的錯誤地方,但有時我們被我們控制之外的力量卡住。
謝謝。
我們都知道,T-SQL的字符串處理能力,有時極不理想多...右對齊文本在SQL Server
我有一個需要在T-SQL輸出作爲右對齊的數字字段文本列。例如:
Value
----------
143.55
3532.13
1.75
你會怎麼做呢?一個好的解決方案應該是清晰和緊湊的,但請記住有這樣一個「太聰明」的東西。
我同意這是做這件事的錯誤地方,但有時我們被我們控制之外的力量卡住。
謝謝。
STR function有一個可選的長度參數以及一個小數位數。
SELECT STR(123.45, 6, 1)
------
123.5
(1 row(s) affected)
如果你必須這樣做在SQL你可以使用如下因素代碼(此代碼假定你有沒有NUMERICS是大於40個字符):
SELECT REPLICATE(' ', 40 - LEN(CAST(numColumn as varchar(40)))) +
CAST(numColumn AS varchar(40)) FROM YourTable
最簡單的方法就是墊左:
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)
Bravo!我怎麼錯過了這個? 請注意STR()需要一個浮點數,而不是小數點。 SQLServer幫助對它非常明確(「......近似數字(浮點型)數據類型的表達式」):如果您的小數位數足夠大,舍入會給您帶來麻煩。 這對大多數人來說仍然是一個很好的答案 – 2008-09-11 16:48:12