2

テーブルにいくつかのデータがあります

このクエリでそのデータを選択すると

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;それぞれに変換

これで私を助けてください、私は彼らが元の形式で来ることを望みます

4

2 に答える 2

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://blogs.lobsterpot.com.au/2010/04/15/handling-special-characters-with-for-xml-path/

于 2012-09-12T07:18:16.720 に答える
-2

VARCHAR の代わりに NVARCHAR にキャストしてみてください

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,'')
于 2012-09-12T07:14:24.713 に答える