3

SQL Server 2008のストアドプロシージャでntextデータ型を操作する方法が不思議でした。 テーブルにntext型の列があります。その列からデータを取得し、データを解析し、変更してから保存する必要があります。 上記のすべての作業に対して、ストアドプロシージャ/ファンクションを使用する必要があります。したがって、ストアドプロシージャ間を渡すデータも含まれます。SQL Server 2008のストアドプロシージャでntext型データを操作する方法

+1

'ntext'は[非推奨]ですので、' nvarchar(max) 'に変換しない方が良いでしょう。(http://msdn.microsoft.com/ ja-jp/library/ms187993.aspx)。その理由を分かち合うためのケア? –

+0

@Damien_The_Unbeliever、私はnvarchar(max)ができることを確認しませんでした。それがntextの長さのデータを保持できれば、列のデータ型をnvarchar(max)に変更することができます。 – Rahatur

答えて

7

スキーマを変更する立場にある場合は、データ型をntextからnvarchar(max)に変更することを検討してください。 SQL Server 2005の新機能はより効率的で、文字列関数でも機能します。

スキーマを変更できない場合は、ntextをタイプnvarchar(max)のローカル変数に変換します。文字列関数はnvarchar(max)で動作します。例:

declare @txt nvarchar(max) 
select @txt = NTextField from YourTable where id = @ID 

... process @txt ... 

update YourTable set NTextField = @txt where id = @ID 
+0

は、nvarchar(max)が8000を超える長さのデータを処理できることを意味しますか? nvarchar(max)に最大限の制限はありますか? – Rahatur

+2

[maxは最大ストレージサイズが2^31-1バイトであることを示します。](http://msdn.microsoft.com/en-us/library/ms186939.aspx)2GBです。 – Andomar

+0

'(max)'は2008年ではなく[2005](http://msdn.microsoft.com/en-us/library/ms186939(v=SQL.90).aspx)で導入されました。 –

関連する問題