2017-05-09 109 views
0

我有以下的在我的SELECT語句中的代碼 -填充字段以空格

SELECT convert(varchar (24),ra.Reference)

如果結果 - R0_2,所以4個字,你怎麼去填充尾隨空間(右邊)剩餘的20個字符組成24個?

類似的,如果我有一個說18.00的數字,我想要添加一個#到前面,我知道我可以用CONCAT實現。 但是這個領域我想是16個字符,任何領先的空間被填充爲白色的空間,所以這個例子看起來像 - 「XXXXXXXXXX#18.00」(其中x是一個空格)

謝謝你的任何諮詢。

回答

1

你可以使用的一個技巧就是連接到字符串的填充量,保證填充缺失的空格。對於長度爲24個字符的字符串,在第一個示例中,我們可以將24個空格連接到該字符串的末尾。然後,取左邊的前24個字符,得到的字符串應該是右邊用空格填充。類似的邏輯適用於其他情況。

首先查詢:

SELECT LEFT(CONVERT(varchar(24), ra.Reference) + '      ', 24) 
FROM yourTable 

第二個查詢:

SELECT RIGHT('    ' + '#' + CONVERT(varchar(16), ra.TotalValue), 16) 
FROM yourTable 
+0

你我的朋友是一個star.The第二我稍微修改RIGHT(''+'#'+ convert(varchar(16),rac.TotalValue),16) – ikilledbill

+0

謝謝,但我忍不住對比爾感覺不好:-) –

0

你也可以使用REPLICATE準確基於文本的長度爲每個小區墊,以確保它總是24字符:

DECLARE @Test1 VARCHAR(24) = 'Test', 
     @Test2 VARCHAR(24) = 'Longer String' 

SELECT CONCAT(@Test1, REPLICATE(N' ', 24 - LEN(@Test1))), 
     CONCAT(@Test2, REPLICATE(N' ', 24 - LEN(@Test2))) 

而對於#....

DECLARE @Number DECIMAL(4,2) = 18.00 
SELECT CONCAT(REPLICATE(' ', 15 - LEN(CONVERT(VARCHAR(16), @Number))), '#',@Number) 

我在這裏用15儘管它是16個字符佔另外的#