【小ネタ】SQLエディタでパラメータを使用する

2017.12.22

はじめに

DI部のおおたきです。DI部で良く使用するデータベースはRedshitですが、RedshiftにはMySQLのようなユーザー定義変数が使えません。ユーザー定義変数を使うと以下のようにSQLが書けます。条件式に同じ値を複数箇所設定しているよう長いSQLでは一箇所値を変えるだけで済むので非常に便利です。

set @param = 1;
select * from test where id = @param;

ユーザー定義変数をサポートしていないDBでも世の中に出ている一般的なSQLエディタには似たような機能をサポートしているものがあり、SQL文に変数を設定しておくことでSQL実行時に値を設定してDBにクエリを投げてくれます。
今回は、Redshiftに接続できる以下のSQLエディタについてそれぞれ、同様の機能があるか調査してみました。

  • SQL Workbench/J
  • Aginity Workbench for Amazon Redshift
  • DBeaver
  • RazorSQL

SQL Workbench/J

SQL WorkbenchはRedshiftに接続する際の定番のツールです。SQL Workbenchでは以下のようにして変数を扱うことができます。

WbVarDef param1=1;
select * from test where id = $[param1];

SQL Workbenchではテキストファイルから変数を読み込むなど色々なことが出来るようです。
詳しくはこちらを参照してください。

Aginity Workbench for Amazon Redshift

Aginity WorkbenchもRedshiftに接続する際の定番のツールです。Aginity Workbenchでは以下のようにして変数を扱うことができます。

select * from test where id = $param1;

Aginity Workbench上でこのように実行すると、Query Parameters Editorというウィンドウが表示され、そこで値を設定することができます。

DBeaver

DBeaverはWindows/MACどちらも対応しているツールです。弊社のブログでも以前取り上げております。DBeaverでも出来るか調べたところやはり以下のようにして変数を扱うことができます。

select * from test where id = :param1;

DBeaver上でこのように実行すると、Bind Parameter(s)というウィンドウが表示され、そこで値を設定することができます。

RazorSQL

RazorSQLもWindowsとMACのどちらも対応しているツールです。ただしこちらは有償版です。今まで紹介したツールは全て無償版なので当然同様の機能があるだとろうと調べたところ、当然ありました。RazorSQLでは以下のようにして実行することで変数を扱えました。

select * from test where id = &param1;

RazorSQL上でこのように実行すると、Entry Parameter Valueというウィンドウが表示され、そこで値を設定することができます。

まとめ

今回4つのSQLエディタを調べましたがどれも同様の機能をサポートしていました。知っている人からみれば当たり前の機能ですが、意外と知らない人もいたので今回色々なツールで使用できるか調査をしてみました。
小ネタかつ基本的な内容ですが、エディタ上でSQLを実行する際に非常に便利な機能だと思いますので参考にしていただければと思います。
今回は以上です。