2008-09-11 72 views
9

我們都知道,T-SQL的字符串處理能力,有時極不理想多...右對齊文本在SQL Server

我有一個需要在T-SQL輸出作爲右對齊的數字字段文本列。例如:

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

你會怎麼做呢?一個好的解決方案應該是清晰和緊湊的,但請記住有這樣一個「太聰明」的東西。

我同意這是做這件事的錯誤地方,但有時我們被我們控制之外的力量卡住。

謝謝。

回答

13

STR function有一個可選的長度參數以及一個小數位數。

SELECT STR(123.45, 6, 1) 

------ 
123.5 

(1 row(s) affected) 
+0

Bravo!我怎麼錯過了這個? 請注意STR()需要一個浮點數,而不是小數點。 SQLServer幫助對它非常明確(「......近似數字(浮點型)數據類型的表達式」):如果您的小數位數足夠大,舍入會給您帶來麻煩。 這對大多數人來說仍然是一個很好的答案 – 2008-09-11 16:48:12

0

如果你必須這樣做在SQL你可以使用如下因素代碼(此代碼假定你有沒有NUMERICS是大於40個字符):

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

最簡單的方法就是墊左:

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)