将纯文本转换为HTML

时间:2014-08-22 10:15:27

标签: sql sql-server

我正在使用HTML代码文本

select prd_desc from prd_mst

prd_desc
------------------------------------------------
<u>hello</u> <font color="#cc0000">dfgfdg</font>

如何将其格式化为HTML格式' hello ...'

我正在为所有那些特殊的HTML字符使用replace函数,或者sqlserver有一些快捷方式,对它有用。

2 个答案:

答案 0 :(得分:3)

您可以使用XML数据类型。

如果将值转换为XML,则会为您提供仅包含一个文本元素的XML片段。使用value()函数提取该值,并且您有一个未授权的字符串。

select cast(p.prd_desc as xml).value('text()[1]', 'nvarchar(max)') as prd_desc
from dbo.prd_mst as p

结果:

prd_desc
-------------------------------------------------
<u>hello</u> <font color="#cc0000">dfgfdg</font>

答案 1 :(得分:1)

试试这个,

create  FUNCTION udf_HtmlDecode  
(  
    @UnDecoded as varchar(max)  
)  
RETURNS varchar(500)  
AS  
BEGIN  
--declare @UnDecoded as varchar(500);  
--set @UnDecoded = 'xvfxv &lt;u&gt;cbgdfgd&lt;/u&gt; &lt;font color=&quot;#cc0000&quot;&gt;dfgfdg&lt;/font&gt; &lt;b&gt;gdfgdf&lt;/b&gt;&lt;br&gt;';  
  DECLARE @Encoded as varchar(max)  

  --order is important here. Replace the amp first, then the lt and gt.   
  --otherwise the &lt will become &amp;lt;   
  SELECT @Encoded = Replace(  
  Replace(  
    Replace(  
      Replace(@UnDecoded,'&amp;','&'),  
    '&lt;', '<'),  
  '&gt;', '>'),  
'&quot;','"')    
 RETURN @Encoded  
--select @Encoded  
END  

然后执行

select dbo.udf_HtmlDecode('&lt;u&gt;hello&lt;/u&gt; &lt;font color=&quot;#cc0000&quot;&gt;dfgfdg&lt;/font&gt;')

将返回

<u>hello</u> <font color="#cc0000">dfgfdg</font>