2017-12-18 280 views
0

我有表,其中的內容有HTML值,並試圖與生成HTML與SQL查詢

<ul> <li> 

將它們串聯我在下面的查詢

CREATE TABLE #T(Value varchar(1000)) 
INSERT INTO #T 
values('<p><b>AA</b> something 1</p>'),('<p><b>BB</b> something 2</p>'),('<p><b>CC</b> something 3</p>') 

select * 
from #T 


SELECT '<ul>' +STUFF((SELECT '<li>' + Value + '</li>' 
       FROM #T 
       FOR XML PATH('')), 1, 0, '') + '</ul>' AS Notes 

使用反正是有得到HTML,因爲它是,這樣輸出將是如下面

<ul> 
<li><p><b>AA</b> something 1</p></li> 
<li><p><b>BB</b> something 2</p></li> 
<li><p><b>CC</b> something 3</p></li> 
</ul> 

不像

<ul>&lt;li&gt;&lt;p&gt;&lt;b&gt;AA&lt;/b&gt; something 1&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;BB&lt;/b&gt; something 2&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;b&gt;CC&lt;/b&gt; something 3&lt;/p&gt;&lt;/li&gt;</ul> 
+1

什麼您使用的是從數據庫到客戶端提供數據的語言? –

+0

你可以嘗試重命名你的問題嗎?這不會吸引任何幫助你的問題,如果這得到了很好的答案,人們將來無法找到它,因爲這個標題 – Tomm

+0

拒絕投票的理由? – mrTester

回答

3

您得到的結果是這樣的,因爲沒有>和<符號(以及和符號,雙引號和Apostrophy)不能以XML原樣存儲,所以它會被轉換爲一些代碼如& lt;爲<。

只是包裝說明用替換功能,以取代<和>符號

CREATE TABLE #T(Value varchar(1000)) 
INSERT INTO #T 
values('<p><b>AA</b> something 1</p>'),('<p><b>BB</b> something 2</p>'),('<p><b>CC</b> something 3</p>') 

;with html 
as 
(
    SELECT '<ul>' +STUFF((SELECT '<li>' + Value + '</li>' 
       FROM #T 
       FOR XML PATH('')), 1, 0, '') + '</ul>' AS Notes 
) 
select 
    Notes = REPLACE(REPLACE(Notes,'&lt;','<'),'&gt;','>') 
    from html