与白色空间的填充领域

时间:2017-05-09 08:29:22

标签: tsql

我的SELECT语句中有以下代码 -

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

如果结果是 - R0_2,那么4个字符,你如何用剩余的20个字符填充尾随空格(右边)来组成24?

类似的是,如果我有一个18.00的数字我想要的是在前面添加一个#,我知道我可以通过CONCAT实现。 但是这个字段我想要16个字符,并且任何前导空格都要填充空格,所以这个例子看起来像 - 'xxxxxxxxxx#18.00'(其中x是空格)

感谢您的任何建议。

2 个答案:

答案 0 :(得分:1)

您可以使用的一个技巧是将字符串连接到一定数量的填充,以确保填充缺少的空格。对于长度为24个字符的字符串,在第一个示例中,我们可以将24个空格连接到该字符串的末尾。然后,从左边开始前24个字符,结果字符串应 right 用空格填充。类似的逻辑适用于另一种情况。

第一次查询:

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

第二次查询:

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

答案 1 :(得分: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个字符来解释#

的添加