我有一个名为 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 - 对吧?在这种情况下,您还可以使用XML
SQL 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