【问题标题】:Generate HTML tag with more than one attribute in SQL request在 SQL 请求中生成具有多个属性的 HTML 标记
【发布时间】:2021-01-03 05:45:51
【问题描述】:

请您帮助我了解如何生成具有多个属性的 XML/HTML

我有这个 SQL 代码

select
    [td/@align] = 'center', td = format(GETDATE(),'dd.MM.yyyy'), null
for xml path('tr')

此代码作为其结果返回:

<tr>
  <td align="center">16.09.2020</td>
</tr>

我需要

<tr>
  <td align="center" style="background-color: red;">16.09.2020</td>
</tr>

不知道怎么做...

如果我尝试使用类似 [td/@align/@style] 的东西 - SQL 会导致错误

列名“td/@align/@style”包含 FOR XML 要求的无效 XML 标识符; '@'(0x0040) 是错误的第一个字符

【问题讨论】:

    标签: html sql sql-server xml tsql


    【解决方案1】:

    你在找这个吗:

    select 'center' AS [td/@align]
           ,'background-color: red;'  AS [td/@style]
           ,format(GETDATE(),'dd.MM.yyyy') AS [td]       
    for xml path('tr')
    

    它产生这个:

    <tr>
        <td align="center" style="background-color: red;">16.09.2020</td>
    </tr>
    

    您可以将一行列视为 xml 标记值和属性,它们使用别名 AS 进行分组。因此,对于更多属性,只需添加具有相应别名的新值 - td/@...

    【讨论】:

    • 不过,我个人会使用CONVERTFORMAT 之上的样式代码。 FORMAT 在处理更大的数据集时往往会很慢。
    • @Larnu 是的,这很好——如果CONVERT/CAST 不能完成这项工作,应该使用FORMAT
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-04
    相关资源
    最近更新 更多