如何在SQL Server 2005的列中存储超过8000个字符?

Rah*_*thi 6 sql sql-server sql-server-2005

我有一个名为ABC的表.在这个表中,我有一个定义为的列XYZ

varchar(8000).
Run Code Online (Sandbox Code Playgroud)

在本专栏中,我将存储SOAP错误请求.

我的问题是,现在我得到的SOAP错误请求的长度超过了

8000 (to be accurate it is now 16000). 
Run Code Online (Sandbox Code Playgroud)

我已经读过最大长度varchar是8000,所以我的问题是如何将列XYZ的长度增加到16000?

mar*_*c_s 20

如果您确实需要超过8000个字符,则需要使用VARCHAR(MAX)最多可存储2 GB文本的字符:

XYZ varchar(max)
Run Code Online (Sandbox Code Playgroud)

这给了你多达20亿个字符 - 这是Leo Tolstoj的战争与和平大约200倍 - 应该足够大多数情况下!

注意:如果您收到SOAP请求,那很可能是格式正确的XML - 对吧?在这种情况下,您还可以使用XMLSQL Server 2005及更高版本的数据类型.它还可以存储多达2 GB的数据,但它比普通数据更有效地存储它varchar(max)- 你可以运行XPath/XQuery来从中获取数据.

所以我建议你使用:

XYZ XML
Run Code Online (Sandbox Code Playgroud)