6

XML8000 文字を超えるレコードを含む型の SQL Server 列があります。

この列を に変換したいと思いますvarchar

切り捨ては気にしません (最初の 8000 文字は問題ありません)。

ただし、試行するたびにCONVERT(varchar(8000), Content)エラーが発生します。

ターゲット文字列のサイズが小さすぎて、XML インスタンスを表すことができません

試してみるCONVERT(varchar(MAX), Content)とエラーが発生します:

文字列型やバイナリは省略されます

試してみるCONVERT(varchar(20000), Content)とエラーが発生します:

タイプ 'varchar' に指定されたサイズ (20000) が、データ タイプに許可されている最大値 (8000) を超えています

試してみるCONVERT(text, Content)とエラーが発生します:

データ型 xml からテキストへの明示的な変換は許可されていません

回避策はありますか?

4

3 に答える 3

11

Cast tovarchar(max)は問題なく動作するはずです。おそらく他の場所に問題があります。datatype で列を挿入/更新しようとすると、そのエラーが発生しますvarchar(8000)

于 2012-07-17T07:33:55.240 に答える
2

実行している問題は、xml を varchar に変換しようとすることに関係しています。あなたのものよりもはるかに小さいXML文字列をNVARCHARに変換しようとしたときに、以前に同様の問題に遭遇しました。CONVERT から CAST に切り替えると、問題が解決するはずです。サイズに関しては、MAX に設定したほうがよいでしょう。

于 2012-07-17T17:09:20.740 に答える
0

私はこの特定の必要性はありませんでしたが、私が試みる別の方法は

SUBSTRING(CAST(Content AS VARCHAR), 1, 8000)
于 2012-07-17T07:05:55.363 に答える