Wie ein Attribut elementzentrierte FOR XML PATH-Abfrage hinzufügen
-
04-10-2019 - |
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>'
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