我的SELECT语句中有以下代码 -
SELECT convert(varchar (24),ra.Reference)
如果结果是 - R0_2,那么4个字符,你如何用剩余的20个字符填充尾随空格(右边)来组成24?
类似的是,如果我有一个18.00的数字我想要的是在前面添加一个#,我知道我可以通过CONCAT实现。 但是这个字段我想要16个字符,并且任何前导空格都要填充空格,所以这个例子看起来像 - 'xxxxxxxxxx#18.00'(其中x是空格)
感谢您的任何建议。
答案 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个字符来解释#
的添加