在SQL Server元数据表中,-1总是表示“max”?
问题描述:
当在SQL Server中运行这个时,我看到-1在CHARACTER_MAXIMUM_LENGTH列中为表格字段/数据类型为nvarchar(max)的列定义。如果长度未定义,我可以假设它始终设置为-1?在SQL Server元数据表中,-1总是表示“max”?
SELECT COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,IS_NULLABLE,ORDINAL_POSITION
FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE 'Ancestor_C%'
答
根据this thread,如果是char, varchar, nchar, nvarchar
它是MAX
:
...
CASE WHEN t.NAME IN ('char','varchar','nchar','nvarchar')
THEN CASE WHEN c.max_length = - 1
THEN 'MAX'
ELSE CONVERT(VARCHAR(4), CASE WHEN t.NAME IN ('nchar','nvarchar') THEN c.max_length/2
...
根据this site它指示:
-1 xml和large-值类型数据。否则,返回NULL。
这也是由this site
支持看起来像第一个网站是缺少VARBINARY ......但你的屏幕截图(我使用的数据库)已经为-1 VARBINARY定义(最大)的数据类型 – MacGyver 2013-03-16 19:38:32