[SQL]將資料組成HTML表格

  • 7492
  • 0
  • SQL
  • 2013-11-06

[SQL]將資料組成HTML表格

朋友問,想將資料組成html表格,然後mail寄出!

image

將資料組成Html表格的方式,小弟目前想到的方式有3種,如下,

1.使用REPLACE方式,先將欄位轉成xml後,再把欄位名稱全都Replace成td

declare @t1 table
(
    id varchar(10),
    nameX Nvarchar(10),
    address Nvarchar(10)
);

	
insert into @t1 values ('資料1','亂馬客','嘉義');
insert into @t1 values ('資料2','郭小玉','高雄');

	
SELECT '<table>' + REPLACE(REPLACE(REPLACE(( SELECT    *
                                  FROM      @t1
                                FOR
                                  XML PATH('tr')
                                ), 'id', 'td'), 'nameX', 'td'), 'address',
                'td') + '</table>';

 

 

 

 

不過這樣幾個欄位,就要REPLACE幾次,很麻煩的呢~~

 

2.使用XQuery方式,

declare @t1 table
(
    id varchar(10),
    nameX Nvarchar(10),
    address Nvarchar(10)
);

	
insert into @t1 values ('資料1','亂馬客','嘉義');
insert into @t1 values ('資料2','郭小玉','高雄');

	
SELECT '<table>' + CAST((SELECT * from @t1 FOR XML PATH('tr'), TYPE).query('
   for $item in /tr
   return
     <tr>
      <td>{ $item/id/text() }</td>
      <td>{ $item/nameX/text() }</td>
      <td>{ $item/address/text() }</td>
     </tr>
') AS NVARCHAR(MAX)) + '</table>' as Result;

 

 

3.將所有欄位名稱使用td,並用''分隔,


declare @t1 table
(
	id varchar(10),
	nameX Nvarchar(10),
    address Nvarchar(10)
);

insert into @t1 values ('資料1','亂馬客','嘉義');
insert into @t1 values ('資料2','郭小玉','高雄');

--將所有欄位名稱使用td,並用''分隔 
SELECT '<table>' + CAST(( select td=id ,''
      ,td=nameX, '' 
      ,td=address,'' 
from @t1 
for XML PATH('tr'), TYPE) AS  nvarchar(MAX)) + '</table>'

 

 

第2, 3種做法,看起來好像比較OK!

參考資料:

Applying an XSL Transformation (SQLXML Managed Classes)

Introduction to XQuery in SQL Server 2005

Hi, 

亂馬客Blog已移到了 「亂馬客​ : Re:從零開始的軟體開發生活

請大家繼續支持 ^_^