読者です 読者をやめる 読者になる 読者になる

checkpoint

自分用のIT技術系ノートです。古い情報や間違っている情報もあるので注意。

SQL Server 2005でデータベースから特定の名前の列を探すSQL

データベース内からある名前の列を探したい、しかしどのテーブルにあるかわからない、という場合がしばしばあります。

ドキュメントがちゃんと作成・保守されていればそれを見れば済むことなのですが、

「テーブル定義書?なにそれ」「E-R図?おいしいの?」な現場の場合はそれも不可能です。

というのは極端な例ですが、ドキュメントがあってもそれが100%信用できる!ってケースは少ないんじゃないかと思います。

そんなときは以下のSQLで検索しましょう。(ただしSQL Server 2005用)

SELECT
 o.name AS table_name
 , c.name AS column_name
FROM
 dbo.syscolumns c 
 INNER JOIN dbo.sysobjects o ON o.id = c.id
WHERE
 c.name LIKE '列名'
 AND o.xtype = 'U'

o.xtype = 'U'ってのはユーザーテーブルをあらわすので、ビューも検索に含めたい場合は、

 AND o.xtype IN ('U', 'V')

みたいな感じでOK。

ただしこの場合はシステムビューも検索結果に含まれるので注意です。