Moh*_*eth 2 sql-server-2008 sql-server datatypes
我的 SQL Server 数据库中的一个表中有一个列,该列可以超过 8000 个字符。由于 SQL Server 中一列的最大允许字符长度为 8000,如何存储超过 8000 个字符的数据?
如果要在 SQL Server 的单个列中存储大于 8000 字节的值,需要考虑两件事。
首先,列必须能够保存这个长度的值。对于字符串,这通常通过为列指定类型varchar(max)
(对于单字节字符)或nvarchar(max)
(对于 Unicode)来完成。例如,下表变量的列中允许超过 8000 字节的字符串:
DECLARE @Example AS table
(
LongColumn varchar(max) NULL
);
Run Code Online (Sandbox Code Playgroud)
其次,您必须确保您尝试存储在此列中的任何值也键入为 eg varchar(max)
。例如,以下结果会导致截断,因为构造的字符串被隐式键入为 varchar(而不是 varchar(max)),因此限制为 8000 字节:
DECLARE @Example AS table
(
LongColumn varchar(max) NULL
);
INSERT @Example
(LongColumn)
VALUES
(REPLICATE('x', 9000)); -- 'x' is implicitly varchar
SELECT
E.LongColumn,
DATALENGTH(E.LongColumn)
FROM @Example AS E;
Run Code Online (Sandbox Code Playgroud)
以下代码可以正常工作,因为它构造了一个类型为 的字符串varchar(max)
:
DECLARE @Example AS table
(
LongColumn varchar(max) NULL
);
INSERT @Example
(LongColumn)
VALUES
(REPLICATE(CONVERT(varchar(max), 'x'), 9000));
SELECT
E.LongColumn,
DATALENGTH(E.LongColumn)
FROM @Example AS E;
Run Code Online (Sandbox Code Playgroud)
请参见联机丛书中的char 和 varchar以及nchar 和 nvarchar。
归档时间: |
|
查看次数: |
8529 次 |
最近记录: |