指定したカラム名を持つテーブルを検索する

データベース内の指定したカラム名を持つテーブルを検索するには?

一度出来上がったシステムの分析や改修などをする時、案外活躍するのが 「キーワードでストアドプロシージャなどを検索する」クエリーや、今回ご紹介する「指定したカラム名を持つテーブルを検索する」 クエリーです。

指定したカラム名を持つテーブルを検索する

指定したカラム名を持つテーブルを検索するには何通りか方法がありますが、以下のクエリを使って、指定したカラム名を持つテーブルの名前をリストすることができます。

SELECT   SCHEMA_NAME(t.schema_id) AS SchemaName, 
	 T.name AS TableName,
         C.name AS ColumnName
FROM     sys.tables AS T
            INNER JOIN sys.columns AS C
               ON T.object_id = C.object_id
WHERE    C.name = 'カラム名'
ORDER BY SchemaName,
	 TableName,
         ColumnName;

指定したカラム名を持つテーブルの検索結果1

sys.tables はデータベース内のユーザーが定義したテーブルオブジェクトを返すオブジェクトカタログビューです。

sys.columns はカラムを持つオブジェクト(テーブル、ビュー等)のカラム情報を返すオブジェクトカタログビューです。

sys.columns の object_id は、そのカラムが属するオブジェクトの object_id なので、そのカラムを使って sys.tables と内部結合し、テーブル名とカラム名を取得しています。


もちろん LIKE を使って、以下のようにカラム名の一部を指定することも可能です。

SELECT   SCHEMA_NAME(t.schema_id) AS SchemaName, 
	 T.name AS TableName,
         C.name AS ColumnName
FROM     sys.tables AS T
            INNER JOIN sys.columns AS C
               ON T.object_id = C.object_id
WHERE    C.name LIKE '%キーワード%'
ORDER BY SchemaName,
	 TableName,
         ColumnName;

指定したカラム名を持つテーブルの検索結果2

© 2010-2024 SQL Server 入門