我通过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邮件中显示相同大小的字段?可能用标签填充?但我认为我上面的方法不再适用了......
答案 0 :(得分:1)
关于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
返回
Some Text |
Some Longer Text with more |
答案 1 :(得分:0)
如果你不想(或者不能)像@techspider和@Shnugo所提到的那样创建HTML,你可以简单地将你的字符串转换为char(20)
cast(field1 as char(20))
例如
Select '| '+cast('text1' as char(20))+' | '+cast('text1' as char(20))+'|'
返回
| text1 | text1 |