VARCHAR 长度在 dbeaver 中为 -1。为什么?

VARCHAR Length is -1 in dbeaver. Why?

我正在使用 MSSQL 数据库并将 dbeaver 用作数据库管理器。我找到一个声明为 VARCHAR 且长度为 ( -1 ) 的字段,它代表什么?

dbeaver 版本为 7.3.2.202101032114。最新的

MAX 数据长度在系统对象中定义为 -1。因此,某些应用程序会将长度报告为 -1,而不是 MAX.

例如:

USE tempdb;
GO

CREATE TABLE dbo.TestTable (varcharColMAX varchar(MAX),
                            nvarcharColMAX nvarchar(MAX),
                            varbinaryColMAX varbinary(MAX),
                            varcharCol10 varchar(10),
                            nvarcharCol10 nvarchar(10),
                            varbinaryCol10 varbinary(10));
SELECT c.name,
       c.max_length
FROM sys.tables t
     JOIN sys.columns c ON t.object_id = c.object_id
WHERE t.[name] = 'TestTable';

DROP TABLE dbo.TestTable;

输出:

name             max_length
---------------- ----------
varcharColMAX    -1
nvarcharColMAX   -1
varbinaryColMAX  -1
varcharCol10     10
nvarcharCol10    20
varbinaryCol10   10

请注意 nvarcharCol10 的长度为 20,因为 max_length 以字节为单位报告大小,单个 nvarchar 字符为 2 个字节长度 (2 * 10 = 20).