Всегда ли -1 означает максимум в таблице метаданных SQL Server?

При выполнении этого в SQL Server я вижу -1, определенное в столбце CHARACTER_MAXIMUM_LENGTH для полей/столбцов таблицы с типом данных nvarchar(max). Если длина не определена, могу ли я предположить, что для нее всегда установлено значение -1?

SELECT COLUMN_NAME,DATA_TYPE,CHARACTER_MAXIMUM_LENGTH,IS_NULLABLE,ORDINAL_POSITION 
FROM INFORMATION_SCHEMA.COLUMNS WHERE COLUMN_NAME LIKE 'Ancestor_C%'

введите здесь описание изображения


person MacGyver    schedule 14.03.2013    source источник


Ответы (1)


Согласно этой теме, если это 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
...

Согласно этот сайт указывает:

-1 для данных типа xml и больших значений. В противном случае возвращается NULL.

Что также поддерживается этим сайт

person Kermit    schedule 14.03.2013
comment
похоже, что на первом сайте отсутствовал varbinary ... но на вашем снимке экрана (и в базе данных, которую я использую) для этого типа данных также определено значение -1 для varbinary(max) - person MacGyver; 16.03.2013