获取SQL表中每个字段的MAX LEN的查询

时间:2015-09-25 18:26:46

标签: sql sql-server-2012 max maxlength adhoc-queries

我一直在尝试提出一个查询,该查询将列出表中每列最大长度的名称。

这是在SQL Server 2012中。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

您可以使用以下查询来获取表格中列的实际和已用长度

 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)

答案 1 :(得分:1)

如果您想了解表格详情,请使用information_schema.columns

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

如果您想要字符串字段的长度,请使用LEN

select len(field1)
from YourTableName