2012-09-12 62 views
2

我在我的表<在SQL Server中转换为<

一些数据时,我选择与此查询数据

select TblActionHistories.Comments from TblActionHistories WHERE TblActionHistories.Entity=CAST('Task' AS VARCHAR) AND EntityId=CAST(32 AS VARCHAR) 

它的未来是这样

Task- <b>T1</b> has been added by Swapnil Sharma 
Task- <b>T1</b> status changed to <b>In Progress</b> by Swapnil Sharma<br/> 

但现在罚款我想我的上述结果#分开使用stuff所以我使用这个

SELECT STUFF((SELECT '#' + ISNULL(CAST(TblActionHistories.Comments AS VARCHAR(MAX)),'') FROM TblActionHistories WHERE TblActionHistories.Entity=CAST('Task' AS VARCHAR) AND EntityId=CAST(32 AS VARCHAR) for xml path ('')),1,1,'') 

它给了我这个

Task- &lt;b&gt;T1&lt;/b&gt; has been added by Swapnil Sharma#Task- &lt;b&gt;T1&lt;/b&gt; status changed to &lt;b&gt;In Progress&lt;/b&gt; by Swapnil Sharma&lt;br/&gt; 

,你可以清楚地看到,所有的特殊字符。像<>分别

转换为&lt; &gt;请帮我有了这个,我希望他们来的原始格式

+0

然后你不应该把它们转换成XML。所以你的问题应该是“什么是连接行值,同时避免将文本转换为XML的好方法?” –

+1

我相信这是因为FOR XML,看看这篇文章:http://sqlblog.com/blogs/rob_farley/archive/2012/06/08/24296.aspx –

+1

谢谢@IvanG它的作品 – rahul

回答

4

嗯,我找到了解决方案通过IvanG

SELECT STUFF((SELECT '#' + ISNULL(CAST(TblActionHistories.Comments AS VARCHAR(MAX)),'') FROM TblActionHistories WHERE TblActionHistories.Entity=CAST('Task' AS VARCHAR) AND EntityId=CAST(32 AS VARCHAR) for xml path(''), root('MyString'), type).value('/MyString[1]','varchar(max)') ,1,1,'') 

参考建议。对这篇文章

http://sqlblog.com/blogs/rob_farley/archive/2012/06/08/24296.aspx

-2

尝试铸造NVARCHAR而非VARCHAR

SELECT STUFF((SELECT '#' + ISNULL(CAST(TblActionHistories.Comments AS NVARCHAR(MAX)),'') FROM TblActionHistories WHERE TblActionHistories.Entity=CAST('Task' AS NVARCHAR) AND EntityId=CAST(32 AS VARCHAR) for xml path ('')),1,1,'') 
+0

不,它不会工作 – rahul

相关问题