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

标签 sql sql-server sql-server-2005

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

varchar(8000).

在此列中,我存储 SOAP 错误请求。

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

8000 (to be accurate it is now 16000). 

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

最佳答案

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

XYZ varchar(max)

这为您提供了最多 20 亿个字符 - 大约是列夫·托尔斯泰 (Leo Tolstoj) 的 war 与和平的 200 倍 - 对于大多数情况来说应该足够了!

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

所以我建议您使用:

XYZ XML

关于sql - SQL Server 2005中如何在列中存储超过8000个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14209034/

相关文章:

mysql - 更新为 NULL 时,列 'x' 的数据被截断

mysql - 销售期间的库存计算

sql-server - SQL Server 查询不工作

sql-server - 我该如何优化这个查询?我必须对同一个表使用两个 INNER JOIN (SQL Server)

java - Squirrel SQL 在 SQL View 中呈现闪烁

sql-server - 如何在sql server中获取分隔符之前的第一个值

SQL Server 2005 动态选择

sql-server-2005 - TSQL NOT EXISTS 为什么这个查询这么慢?

sql - Linq 中的分层数据 - 选项和性能

sql - 尝试根据另一个表获取结果 - WHERE 中不允许使用聚合函数