如何将SQL查询结果转换为具有属性的html标记

Beh*_*nam 2 html xml t-sql sql-server sql-server-2014

请考虑下表在SQL Server数据库中:

Id    ProductName   Price    Size
-----------------------------------
1     T-Shirt       1000     M
2     Jeans         1800     L
Run Code Online (Sandbox Code Playgroud)

如何将此表转换为以下HTML字符串:

<div class='row' Id='1' size='M'>
    <div class='cell'>T-Shirt</div> 
    <div class='cell'>1000</div>
</div>
<div class='row' Id='2' size='L'>
    <div class='cell'>Jeans</div> 
    <div class='cell'>1800</div>
</div>
Run Code Online (Sandbox Code Playgroud)

Shn*_*ugo 6

像这样尝试:

首先是一个模型表(请下次自己做):

DECLARE @tbl TABLE(Id INT,ProductName VARCHAR(100),Price DECIMAL(10,4),Size VARCHAR(10));
INSERT INTO @tbl VALUES
 (1,'T-Shirt',1000,'M')
,(2,'Jeans',1800,'L');
Run Code Online (Sandbox Code Playgroud)

该查询将使用FOR XML PATH,它提供了对XML命名的最高控制

SELECT 'row' AS [@class]
      ,t.Id AS [@Id]
      ,t.Size AS [@size]
      ,'cell' AS [div/@class]
      ,t.ProductName AS [div]
      ,''
      ,'cell' AS [div/@class]
      ,t.Price AS [div]
FROM @tbl t
FOR XML PATH('div');
Run Code Online (Sandbox Code Playgroud)

结果:

<div class="row" Id="1" size="M">
  <div class="cell">T-Shirt</div>
  <div class="cell">1000.0000</div>
</div>
<div class="row" Id="2" size="L">
  <div class="cell">Jeans</div>
  <div class="cell">1800.0000</div>
</div>
Run Code Online (Sandbox Code Playgroud)

提示1:我们需要,''中间的空格来开始一个新<div>元素。否则,引擎将引发错误。

提示2:典型的HTML表可以用一些XQuery构建