SQL Serverで列名を取得する
今回は、SQL Serverで列名を取得してみます。
対象バージョンはSQL Server2008以降。
取得方法
テーブル・ビューの列名をメタデータから取得するにあたって、
sysobjectや、sys.columnsなど様々な方法が取られるようですが、
Microsoftとしては情報スキーマビュー(information schema view)を使用してもらいたいようなので、そちらを使用してみます。
情報スキーマビューの一覧はこちら。
この中で、COLUMNSビューを使用します。
COLUMNSビューには、
テーブル名(TABLE_NAME)
列名(COLUMN_NAME)
列の識別番号(おそらく並び順)(ORDINAL_POSITION)
データ型(DATA_TYPE)
などが定義されています。
他にもカラムのサイズなどもあったり。
これらを使用すれば、どのシステムテーブル同士を結合すればいいのかを覚えなくてもすぐSelectできます。
取得例
Groupsというテーブル名について引っ張ってみました。
ORDINAL_POSITION順にしていますので、列の定義位置順に、定義位置番号・列名・データ型・テーブル名をSelect。
もちろんViewにも対応してますよ。TABLE_NAMEにview名を指定すればよいだけ。
TABLE_NAMEを絞り込まなければ、データベース内の全テーブル・ビューの情報を取得できるようです。
以上、備忘録でした。