在SQL Server中创建一个具有特定空格的字符串

问题描述 投票:0回答:1

因此,我试图在SQL Server中创建一个存储过程,该存储过程发送一封格式化为某种形式的电子邮件。我希望它看起来像:

##date##    ##credit##
            ##debit##

借方和贷方列准确对齐的地方。问题是,我尝试的所有结果都会导致:

##date##    ##credit##
        ##debit##

我尝试过:

declare @lineText nvarchar(max) =  
CONCAT(CONCAT(right(replicate(' ',25) + '##date##',25), 'Debit: $##debit##')
, char(13)
, CONCAT(right(replicate(' ',25) + ' ',25), 'Credit: $##credit##'));

和:

declare @lineText nvarchar(max) =  
CONCAT(CONCAT(LEFT('##date##' + replicate(' ', 25), 25), 'Debit: $##debit##')
, char(13)
, CONCAT(LEFT('' + replicate(' ', 25), 25), 'Credit: $##credit##'));

和:

declare @lineText nvarchar(max) =  
CONCAT(CONCAT(LEFT('##date##' + space(30), 30), 'Debit: $##debit##')
, char(13)
, CONCAT(LEFT('' + space(30), 30), 'Credit: $##credit##'));

和:

declare @lineText nvarchar(max) =  
CONCAT(CONCAT(CAST('##date##' as CHAR(30)), 'Debit: $##debit##')
, char(13)
, CONCAT(CAST('' as CHAR(30)), 'Credit: $##credit##'));

没有任何内容使列对齐。如何在贷方和借方列实际对齐的地方创建一个字符串?

我希望底行上的空格与顶行上的日期包含相同数量的空格。

谢谢。

sql sql-server string spaces
1个回答
1
投票

使用空格进行html格式化永远无法正常工作。可能最简单的解决方案是仅使用html表。我想您希望这三列排列整齐。这样的东西很干净。

declare @lineText nvarchar(max) = '<table><tr><td rowspan="2" valign="top">##date##</td><td>Debit:</td><td>$##debit##</td></tr><tr><td>Credit:</td><td>$##credit##</td></tr></table>'
© www.soinside.com 2019 - 2024. All rights reserved.