首页 > 代码库 > 查询表中所有字段的最大长度(大数据情况)
查询表中所有字段的最大长度(大数据情况)
DECLARE @tableName NVARCHAR(50)= ‘home‘; IF OBJECT_ID(N‘TableColumnMaxLen‘, N‘U‘) IS NULL BEGIN CREATE TABLE TableColumnMaxLen ( TableName NVARCHAR(50) NOT NULL , ColumnName NVARCHAR(50) NOT NULL , ColumnMaxLen INT NOT NULL , PRIMARY KEY ( TableName, ColumnName ) ); END; DECLARE @columnName NVARCHAR(50); DECLARE @columnMaxLen INT; DECLARE @sql NVARCHAR(MAX); DECLARE @initState INT= -1; DECLARE @searchingState INT= -2; IF NOT EXISTS ( SELECT 1 FROM dbo.TableColumnMaxLen WHERE TableName = @tableName ) BEGIN INSERT TableColumnMaxLen SELECT @tableName , COLUMN_NAME , @initState FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @tableName; END; WHILE 1 = 1 BEGIN SET @columnName = ( SELECT TOP 1 ColumnName FROM TableColumnMaxLen WHERE TableName = @tableName AND ColumnMaxLen = @initState ); IF @columnName IS NULL BREAK; UPDATE TableColumnMaxLen SET ColumnMaxLen = @searchingState WHERE TableName = @tableName AND ColumnName = @columnName; SET @sql = ‘SELECT @columnMaxLen=ISNULL(MAX(LEN([‘ + @columnName + ‘])), 0) FROM ‘ + @tableName; -- PRINT @sql; EXEC sp_executesql @sql, N‘@columnMaxLen int out‘, @columnMaxLen OUT; UPDATE TableColumnMaxLen SET ColumnMaxLen = @columnMaxLen WHERE TableName = @tableName AND ColumnName = @columnName; END; SELECT * FROM TableColumnMaxLen WHERE TableName = @tableName;
查询表中所有字段的最大长度(大数据情况)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。