メモの日々


2022年07月29日(金) [長年日記]

[db] SELECT文で非表示にするカラム名の方を指定したい

テーブルから一部のカラムを除いた検索をしたいときに、その除く方のカラム名を指定して検索したいことがある(対象テーブルのカラム数がとても多いときなど)。

でも通常のSQLではそのような指定の仕方はできないようだ。が、

の回答は使えると思った。

  1. 検索したいテーブルを一時テーブルにコピーする
  2. 一時テーブルから不要なカラムを削除する
  3. 一時テーブルに対してカラム名に「*」を指定して検索する

これで長々とカラム名を羅列せずに済む。

-- SQL Server用のSQL
-- 検索したいテーブルを一時テーブルにコピーする
select * into #tmp from tableA;
-- 一時テーブルから不要なカラムを削除する
alter table #tmp drop column columnA;
-- 一時テーブルに対してカラム名に「*」を指定して検索する
select * from #tmp;
-- 要らなくなったら一時テーブルを削除
drop table #tmp;

SQL Serverではテーブル名を「#」一つではじめるとローカル一時テーブルになると知った。