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).
我正在使用 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).