SQL 用制表符而不是空格填充列内容

SQL pad column content with tabs instead of spaces

我正在通过 SELECT 语句动态创建一个列。此列的内容是一个字符串,然后用作电子邮件的内容。

文本看起来像这样:

text 1 | text 2 | text 3 | ...
text 123 | text 223 | text 323 | ...

如你所见,两条线没有对齐。预期的输出应该是这样的:

text 1   | text 2   | text 3   | ...
text 123 | text 223 | text 323 | ...

显而易见的解决方案是填充每个字段以使每个字段具有相同的大小。为此,我使用了以下代码:

LEFT(field1 + REPLICATE(' ', 20), 20)

我的问题是,在 Outlook 中,文本仍未正确对齐显示,即使我将文本复制到记事本中,它也已正确对齐。原因是 Outlook 使用 Arial 来显示文本邮件,而 Arial 中的空格与其他字符的大小不同。因此填充不会产生预期的结果。

我现在的问题是:是否有其他方法可以使用这种 填充方法 以便在 Outlook 邮件中获得相同大小的显示字段?可能是通过用制表符填充?但我认为我上面的方法不再有效......

如果您不想(或不能)像@techspider 和@Shnugo 提到的那样创建 HTML,您可以简单地将字符串转换为 char(20)

cast(field1 as char(20))

例如

Select '| '+cast('text1' as char(20))+' | '+cast('text1' as char(20))+'|'

Returns

| text1                | text1               |

关于 TAB,我突然意识到你在谈论尾随制表符

Declare @Table table (SomeField varchar(50))
Insert into @Table values
('Some Text'),
('Some Longer Text with more')

Select String = SomeField+replicate(char(9),(30-Len(SomeField))/4)+'|'
From @Table

Returns

Some Text                   |
Some Longer Text with more  |