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 |
我正在通过 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 |