我有一个名为 ABC 的表。在此表中,我有一列定义为XYZ
varchar(8000).
在本专栏中,我存储了 SOAP 错误请求。
我的问题是现在我得到的 SOAP 错误请求的长度超过
8000 (to be accurate it is now 16000).
我读过最大长度varchar为 8000,所以我的问题是如何将 XYZ 列的长度增加到 16000?
我有一个名为 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 亿个字符——这是列夫·托尔斯泰的《战争与和平》的大约 200 倍——对于大多数情况来说应该足够了!
注意:如果您收到一个 SOAP 请求,那很可能是格式正确的 XML - 对吧?在这种情况下,您还可以使用XMLSQL Server 2005和更高版本的数据类型。它还可以存储多达 2 GB 的数据,但它比普通数据更有效地存储数据varchar(max)- 您可以对其运行 XPath/XQuery 以从中获取位。
所以我建议你使用:
XYZ XML
采用varchar(max)
varchar(n)是可变长度的非 Unicode 字符串数据。n定义字符串长度,可以是 1 到 8,000 之间的值。max 表示最大存储大小为 2^31-1 字节(2 GB)。
存储大小是输入数据的实际长度 + 2 个字节。
尝试从使用处理长文本的数据类型开始。我想到了“文字”。
--Check this example...
create table t1( i varchar(max))
create table t2( i varchar(8000))
DECLARE @String1 VARCHAR(MAX)
set @String1 = 'Hello'
declare @i int
set @i = 1
while ( @i < 50000)
begin
set @String1 = @String1 + 'world'
set @i = @i +1
end
select len(@String1)
insert into t1 select @String1 -- will succeed
insert into t2 select @String1 -- will fail
SELECT LEN(i) from t1
SELECT LEN(i) from t2