2022年07月11日(月) [長年日記]
■ [db][dev][howto][windows] SQL Serverにコマンドラインでアクセス
SQL Serverにはsqlcmdコマンドが付属していて、コマンドラインからSQL(を拡張したTransact-SQL)を発行できる。
データベース名を変更する例をメモ。
PS C:\> sqlcmd -S localhost\インスタンス名 -U ユーザ名 1> select name from sys.databases 2> go 1> alter database [古い データベース名] modify name = [新しい データベース名] 2> go
- goが面倒。
- データベース名にスペースが含まれている場合、上のように名前を角括弧で囲えば処理ができるようになる。
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ではテーブル名を「#」一つではじめるとローカル一時テーブルになると知った。