在SQL實務應用上,相信不少人都會把抓出來的特定資料再透過email寄出來吧?
此時如果能轉成HTML格式會更方便閱讀,以下將分享使用FOR XML方式來達成此需求。
--首先建立測試資料
IF OBJECT_ID('#TT','U') IS NOT NULL
DROP TABLE #TT
CREATE TABLE #TT
(
id INT,
name VARCHAR(20),
sex char(1),
memo VARCHAR(50),
cr_date datetime default(getdate())
)
INSERT INTO #TT
(id,name,sex,memo)
VALUES
(1,N'John',N'M',N'test11111'),
(2,N'Lee',N'F',N'test22222'),
(3,N'Penny',N'F',N'test33333'),
(4,N'Wade',N'M',N'test444444'),
(5,N'James',N'M',N'test55555')
DECLARE @Content VARCHAR(MAX)
--將所有欄位名稱設成TD,再以''分隔
SET @Content = CAST((SELECT name AS 'TD','',
CASE sex WHEN 'M' THEN '男性' WHEN 'F' THEN '女性' END as 'TD','',
memo AS 'TD',''
FROM #TT
FOR XML PATH('tr'),TYPE) AS VARCHAR(MAX))
DECLARE @HTML VARCHAR(MAX)
SET @HTML='<HTML><BODY><TABLE border=1><TH>姓名</TH><TH>性別</TH><TH>MEMO</TH>'+@Content+'</TABLE>'
SELECT @HTML
產出結果將如下表:
姓名 | 姓別 | MEMO |
---|---|---|
John | 男性 | test11111 |
Lee | 女性 | test22222 |
Penny | 女性 | test33333 |
Wade | 男性 | test444444 |
James | 男性 | test55555 |
參考網址:https://docs.microsoft.com/zh-tw/sql/relational-databases/xml/use-path-mode-with-for-xml