5

我正在构建一些 HTML 以包含在电子邮件正文中并使用 sp_send_dbmail 发送。我想右对齐一些列。有没有一种简单的方法来做到这一点(没有使用 FOR XML EXPLICIT 重写它)?

declare @html varchar(max)

set @html = '<table cellpadding=0 cellspacing=0 border=0>'

set @html +=  
  cast(
    (select
      'Column1' as td, '',
      'Column2' as td, '',
      'Column3' as [td align=right] /* Would like to do something like this */
    for xml path('tr')) as varchar(max)
  )

set @html += '</table>'
4

1 回答 1

12

这应该这样做。请注意,您不需要手动将<tr>and</tr>标记添加到您的 html 字符串中。这些是作为for xml path('tr'). 您可能打算改为添加 </table>到末尾。

declare @html varchar(max)

set @html = '<table cellpadding=0 cellspacing=0 border=0>'

set @html +=  
  cast(
    (select
      'Column1' as td, '',
      'Column2' as td, '',
      'right' as [td/@align], 'Column3' as td, '' 
    for xml path('tr')) as varchar(max)
  )

set @html += '</table>'

select @html

输出是:

<table cellpadding=0 cellspacing=0 border=0><tr><td>Column1</td><td>Column2</td><td align="right">Column3</td></tr></table>
于 2010-09-23T19:41:25.553 回答