[SQL]將資料組成HTML表格
有朋友問,想將資料組成html表格,然後mail寄出!
將資料組成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:從零開始的軟體開發生活」
請大家繼續支持 ^_^