【问题标题】:How to convert sql query result to html tags with attributes如何将sql查询结果转换为带有属性的html标签
【发布时间】:2019-09-19 09:04:52
【问题描述】:

考虑 SQL-Server 数据库中的下表:

Id    ProductName   Price    Size
-----------------------------------
1     T-Shirt       1000     M
2     Jeans         1800     L

如何将此表格转换为以下 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>

【问题讨论】:

    标签: html sql-server xml tsql sql-server-2014


    【解决方案1】:

    试试这样:

    首先是一个mockup-table(下次请自己做):

    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');
    

    查询将使用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');
    

    结果:

    <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>
    

    提示1:我们需要中间的空,'' 来开始一个新的&lt;div&gt; 元素。否则引擎会抛出错误。

    提示2:典型的HTML表格can be built with some XQuery

    【讨论】:

      【解决方案2】:

      @Shnugo 打败了我。或者,您可以简单地这样做:

      DECLARE @table TABLE (ID INT, ProductName VARCHAR(100), Price INT, SIZE CHAR(1));
      INSERT @table VALUES (1,'T-Shirt',1000,'M'),(2,'Jeans',1800,'L');
      
      SELECT 
      '<div class="row" Id="'+LEFT(t.ID,30)+'" size="'+t.SIZE+'">
          <div class="cell">'+t.ProductName+'</div> 
          <div class="cell">'+LEFT(t.Price,30)+'</div>
      </div>'
      FROM @table AS t;
      

      返回:

      <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>
      

      【讨论】:

      • 值得一提的是,这将与特殊字符中断...我会避免使用字符串工具创建 xml...
      • XQuery 是我的首选,但你打败了我。对于这么简单的事情,它可能并不重要。
      • 您不认为产品名称可以包含“&”或任何其他禁止字符吗?
      猜你喜欢
      • 1970-01-01
      • 2012-12-18
      • 1970-01-01
      • 2015-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-07
      相关资源
      最近更新 更多