INSERT文を書くときなど、カラム名(列名)の一覧が欲しい時が結構あります。
そういったときに便利なテクニックです。カンマ区切りで横並びで表示できます。
サンプルとしてテストテーブルに対して実行します。
テストテーブル作成
SQL
--テストテーブル作成
create table test
(
[id] int,
[Name] varchar(max),
[number1] int,
[number2] int,
[number3] int,
[number4] int,
[number5] int,
[number6] int,
[number7] int,
[number8] int,
[number9] int,
)
コード例
変数にテーブル名、検索文字列を設定して実行します。
①全ての列を取得
SQL
--出力対象
DECLARE @cols varchar(max)
--検索対象テーブル
DECLARE @table_name varchar(max) = 'test'
--検索文字列("%"=任意の文字)
DECLARE @Str varchar(max) = '%'
--列名取得
set @cols = (SELECT column_name+ ',' FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @table_name and column_name LIKE @Str FOR XML PATH(''))
--結果表示
print @cols
結果 Name,id,number1,number2,number3,number4,number5,number6,number7,number8,number9,
②”number”から始まるカラム名を取得
SQL
--出力対象
DECLARE @cols varchar(max)
--検索対象テーブル
DECLARE @table_name varchar(max) = 'test'
--検索文字列("_"=任意の1文字)
DECLARE @Str varchar(max) = 'number_'
--列名取得
set @cols = (SELECT column_name+ ',' FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = @table_name and column_name LIKE @Str FOR XML PATH(''))
--結果表示
print @cols
結果
number1,number2,number3,number4,number5,number6,number7,number8,number9,