2022年07月29日(金) [長年日記]
■ [db] SELECT文で非表示にするカラム名の方を指定したい
テーブルから一部のカラムを除いた検索をしたいときに、その除く方のカラム名を指定して検索したいことがある(対象テーブルのカラム数がとても多いときなど)。
でも通常のSQLではそのような指定の仕方はできないようだ。が、
- Exclude a column using SELECT * [except columnA] FROM tableA? (stackoverflow)
の回答は使えると思った。
- 検索したいテーブルを一時テーブルにコピーする
- 一時テーブルから不要なカラムを削除する
- 一時テーブルに対してカラム名に「*」を指定して検索する
これで長々とカラム名を羅列せずに済む。
-- SQL Server用のSQL -- 検索したいテーブルを一時テーブルにコピーする select * into #tmp from tableA; -- 一時テーブルから不要なカラムを削除する alter table #tmp drop column columnA; -- 一時テーブルに対してカラム名に「*」を指定して検索する select * from #tmp; -- 要らなくなったら一時テーブルを削除 drop table #tmp;
SQL Serverではテーブル名を「#」一つではじめるとローカル一時テーブルになると知った。