2013-03-14 50 views
1

当在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%' 

enter image description here

回答

1

根据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

+0

支持看起来像第一个网站是缺少VARBINARY ......但你的屏幕截图(我使用的数据库)已经为-1 VARBINARY定义(最大)的数据类型 – MacGyver 2013-03-16 19:38:32