首页 > 代码库 > 查询表中所有字段的最大长度

查询表中所有字段的最大长度

DECLARE @tableName NVARCHAR(50)= home;

DECLARE @tmpTable TABLE
    (
      ColumnName NVARCHAR(50) NOT NULL ,
      ColumnMaxLen INT NOT NULL
    );
DECLARE @columnName NVARCHAR(50);
DECLARE @columnMaxLen INT;
DECLARE @sql NVARCHAR(MAX);
DECLARE tmpCursor CURSOR
FOR
    SELECT  COLUMN_NAME
    FROM    INFORMATION_SCHEMA.COLUMNS
    WHERE   TABLE_NAME = @tableName
    ORDER BY ORDINAL_POSITION FOR READ ONLY;
    
OPEN tmpCursor;
FETCH NEXT FROM tmpCursor INTO @columnName;
WHILE @@FETCH_STATUS = 0
    BEGIN
        SET @sql = SELECT @columnMaxLen=ISNULL(MAX(LEN([ + @columnName
            + ])), 0) FROM  + @tableName;
     --   PRINT @sql;
        EXEC sp_executesql @sql, N@columnMaxLen int out, @columnMaxLen OUT;
        INSERT  @tmpTable
                ( ColumnName, ColumnMaxLen )
        VALUES  ( @columnName, @columnMaxLen );
        FETCH NEXT FROM tmpCursor INTO @columnName;
    END;
CLOSE tmpCursor;
DEALLOCATE tmpCursor;
SELECT  *
FROM    @tmpTable;

 

查询表中所有字段的最大长度