人生、徒然なるままに。

Webエンジニアのぼやきです。IT系の話題をメインに。

SQL Serverで列名を取得する

今回は、SQL Serverで列名を取得してみます。

対象バージョンはSQL Server2008以降。

 

取得方法

テーブル・ビューの列名をメタデータから取得するにあたって、

sysobjectや、sys.columnsなど様々な方法が取られるようですが、

Microsoftとしては情報スキーマビュー(information schema view)を使用してもらいたいようなので、そちらを使用してみます。

 

情報スキーマビューの一覧はこちら。

情報スキーマ ビュー (Transact-SQL)

 

この中で、COLUMNSビューを使用します。

 

COLUMNSビューには、

 

テーブル名(TABLE_NAME)

列名(COLUMN_NAME)

列の識別番号(おそらく並び順)(ORDINAL_POSITION)

データ型(DATA_TYPE)

 

などが定義されています。

他にもカラムのサイズなどもあったり。

 

これらを使用すれば、どのシステムテーブル同士を結合すればいいのかを覚えなくてもすぐSelectできます。

 

取得例

 

Groupsというテーブル名について引っ張ってみました。

ORDINAL_POSITION順にしていますので、列の定義位置順に、定義位置番号・列名・データ型・テーブル名をSelect。

もちろんViewにも対応してますよ。TABLE_NAMEにview名を指定すればよいだけ。

 

TABLE_NAMEを絞り込まなければ、データベース内の全テーブル・ビューの情報を取得できるようです。

 

以上、備忘録でした。