各テーブルの列数をどのようにカウントしますか?


8

データベース内のテーブルとそのテーブルの列数を一覧表示するスクリプトを記述したいと思います。

このような:

table name      number       
---------       --------     
table1            1         
table2            13        
table3            2         
table4            6    

回答:


20

sys.columnsの列を確認できます。

ビューやテーブルなどの列を持つオブジェクトの各列の行を返します。以下は、列を持つオブジェクトタイプのリストです。

  • テーブル値のアセンブリ関数(FT)
  • インラインテーブル値SQL関数(IF)
  • 内部テーブル(IT)
  • システムテーブル(S)
  • テーブル値SQL関数(TF)
  • ユーザーテーブル(U)
  • ビュー(V)

テーブルの列数の場合、このクエリを使用できます。

SELECT [Schema] = s.name
    , [Table] = t.name
    , number = COUNT(*)
FROM sys.columns c
INNER JOIN sys.tables t ON c.object_id = t.object_id
INNER JOIN sys.schemas s ON t.schema_id = s.schema_id
GROUP BY t.name, s.name
  • sys.tablesは、ビューのカウントのためにsys.viewsで置き換えることができます
  • sys.objectsWHERE、必要なタイプの句とともに使用することもできます。

    SELECT [Schema] = s.name
        , [Table] = o.name
        , number = COUNT(*)
        , o.type_desc
    FROM sys.columns c
    INNER JOIN sys.objects o ON c.object_id = o.object_id
    INNER JOIN sys.schemas s ON o.schema_id = s.schema_id
    WHERE type IN (
        'U'     --> U = Table (user-defined)
        , 'V'   --> V = View
        , ...) 
    GROUP BY o.name, s.name, o.type_desc;

これも機能しますが、最初のクエリを使用することをお勧めします( Aaron BertrandのINFORMATION_SCHEMAビューに対するケースを参照)。

SELECT TABLE_SCHEMA
    , TABLE_NAME
    , number = COUNT(*) 
FROM INFORMATION_SCHEMA.COLUMNS
GROUP BY TABLE_SCHEMA, TABLE_NAME;

0

INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'TBlName'からCOUNT(*)を選択します

テーブルにある列の数を取得するのに十分です

その唯一のテーブル


あなたの答えはCATALOGとSCHEMAも考慮する必要があります。
McNets、2018

0
select st.name, count(1) as column_count 
from sys.tables st
inner join sys.columns sc on st.object_id = sc.object_id
where st.name like '%%'
group by st.name
order by count(1) desc
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.