2015-09-25 6 views

ответ

1

Если вы хотите знать, ваша таблица подробно использовать information_schema.columns

select * 
from information_schema.columns 
where table_name = 'YourTableName' 

Если вы хотите, ДЛИНА с использованием строки поля LEN

select len(field1) 
from YourTableName 
+0

Спасибо. Поэтому поле character_maximum length содержит только -1 для всех полей, содержащих символы. (VARCHAR (макс)). Как я могу получить фактическую максимальную длину того, что находится в таблице? – user3329160

+0

Прочтите мое обновление. –

+0

Я ищу динамический способ перечислить каждое имя поля и соответствующую максимальную длину через один запрос. – user3329160

2

Вы можете использовать ниже запрос, чтобы получить фактические и используется длина колонн в таблице

DECLARE @TSQL VARCHAR(MAX) = '' 
DECLARE @TableName sysname = 't1' 
SELECT @TSQL = @TSQL + 'SELECT ' + QUOTENAME(sc.name, '''') + ' AS ColumnName, ' + QUOTENAME(t.name, '''') + ' AS DataType, ' + 
QUOTENAME(sc.max_length, '''') + ' AS ActualLength, MAX(DATALENGTH(' + QUOTENAME(sc.name) + ')) AS UsedLength FROM '[email protected]+ char(10) +' UNION ' 
FROM sys.columns sc 
     JOIN sys.types t on t.system_type_id = sc.system_type_id and t.name != 'sysname' 
WHERE sc.OBJECT_ID = OBJECT_ID(@TableName) 
SET @TSQL = LEFT(@TSQL, LEN(@TSQL)-6) 
EXEC(@TSQL) 
+0

Здравствуйте, я попытался использовать этот запрос, и у меня появилось сообщение об ошибке: Msg 537, Level 16, State 5, Line 8 Неверный параметр длины передан функции LEFT или SUBSTRING. – user3329160

+0

@ User3329160 Это потому, что вы не указали имя таблицы, для которой вам нужны детали. Обновите «t1» с именем вашей таблицы здесь ** DECLARE TableName sysname = 't1' ** –