すべてのフィールド(再印刷)のSQLServerのルックアップテーブルの最大長

 

転載元:https://www.cnblogs.com/lizhanglong/p/6696722.html

DECLARE @tablename NVARCHAR(50)= 'ホーム';

OBJECT_ID(N'TableColumnMaxLen 'N'U')がnullの場合
    ベギン
        TABLE TableColumnMaxLenのCREATE
              テーブル名NVARCHAR(50)NOT NULL、
              ColumnNameにNVARCHAR(50)NOT NULL、
              ColumnMaxLen INT NOT NULL、
              PRIMARY KEY(テーブル名、ColumnNameに)
            );
    終わり;
DECLARE @columnName NVARCHAR(50)。
DECLARE @columnMaxLen INT。
NVARCHAR(MAX)@sql DECLARE。
DECLARE @initState INT = -1;
DECLARE @searchingState INT = -2。
EXISTSされていない場合(SELECT 1
                dbo.TableColumnMaxLen FROM
                WHEREテーブル名= @tablename)
    ベギン
        INSERT TableColumnMaxLen
                SELECT @tablename、
                        COLUMN_NAME、
                        @initState
                INFORMATION_SCHEMA.COLUMNS FROM
                WHERE TABLE_NAME = @tablename。
    終わり;

1 = 1 WHILE
    ベギン
        SET @columnName =(SELECT TOP 1
                                    ColumnNameに
                            TableColumnMaxLen FROM
                            WHEREテーブル名= @tablename
                                    AND ColumnMaxLen = @initState
                          );
        @columnNameがnullの場合
            ブレーク;

        UPDATE TableColumnMaxLen
        SET ColumnMaxLen = @searchingState
        WHEREテーブル名= @tablename
                AND ColumnNameに= @columnName。

        SETの@sql = 'SELECT @ columnMaxLen = ISNULL(MAX(LEN([' + @columnName
            + ']))、0)から' + @tablename。
      -  PRINTの@sql。
        EXEC sp_executesqlを@sql、N 'columnMaxLenが出てint型@'、@columnMaxLen OUT。

        UPDATE TableColumnMaxLen
        SET ColumnMaxLen = @columnMaxLen
        WHEREテーブル名= @tablename
                AND ColumnNameに= @columnName。      
    終わり;

選択する *
TableColumnMaxLen FROM
WHEREテーブル名= @tablename。

  

上記の家は、あなたがチェックしたいテーブル名を置き換え 

クエリパフォーマンス

 

おすすめ

転載: www.cnblogs.com/hao-1234-1234/p/12121215.html