Запрос, чтобы получить MAX LEN каждого поля в таблице SQL
Я пытался придумать запрос, который будет перечислять имя каждого столбца в таблице с его максимальной длиной.
Это в SQL Server 2012.
Любая помощь с благодарностью.
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 '+@TableName+ 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)
Если вы хотите знать детали таблицы, используйте information_schema.columns
select *
from information_schema.columns
where table_name = 'YourTableName'
Если вы хотите длину строкового поля, используйте LEN
select len(field1)
from YourTableName