• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

生成HTML与SQL查询

sql 来源:mrTester 3次浏览

我有表,其中的内容有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> 


===========解决方案如下:

您得到的结果是这样的,因为没有>和<符号(以及和符号,双引号和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 

版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)