いくつかのデータを保存するフィールドがあり、フィールドはとして宣言されていvarchar(max)
ます。私の理解では、これは2^31 - 1
文字を保存する必要がありますが、8000文字を超えるコンテンツを入力すると、残りがカットされます。
すべてのデータが更新ステートメントに含まれていることを確認し、クエリは他のすべての場所で正常に見えますが、データを選択し直すと切り捨てられました。
データをWebサイトに表示するとき、およびSSMSを使用してデータを表示するとき、データは切り捨てられselect content from table
ます。
select DATALENGTH (content) from table
8000として返されます。
これを使用してデータを設定しますupdate table set content = 'my long content' where id = 1
。コンテンツには多くのHTMLが含まれていますが、問題の原因はわかりません。私がやっていることを見ることができる唯一のことは、これがユーザーが入力したコンテンツ"
である''
ため、すべてを置き換えることです(私が今やった理由を覚えていない)。
コンテンツ内のすべての単一引用符を削除することで、コンテンツを正しく入力することができたので、データベースではなくデータで何か奇妙なことが起こっていると思います。
varchar(max)
フィールドを使用するためにクエリで特別なことをする必要がありますか?
使用:SQL Server 2008(10.50)64ビット。