Frage

Ich baue einige HTML werden im Körper einer E-Mail enthalten und mit sp_send_dbmail gesendet. Ich möchte nach rechts-align einige der Spalten. Gibt es einen einfachen Weg, dies zu tun (kurz umschreiben es FOR XML EXPLICIT verwenden)?

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>'
War es hilfreich?

Lösung

Das sollte es tun. Beachten Sie, dass Sie die <tr> und </tr> Tags zu Ihrem HTML-String nicht manuell hinzufügen müssen. Diese werden Sie im Rahmen des for xml path('tr') gegeben. Sie haben wahrscheinlich gedacht, statt </table> zu Ende hinzuzufügen.

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

Die Ausgabe ist:

<table cellpadding=0 cellspacing=0 border=0><tr><td>Column1</td><td>Column2</td><td align="right">Column3</td></tr></table>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top