psql で変数を扱う

ORACLE の sql*plus などと同じように psql でも変数を扱うことができます。

変数は set コマンドで値を代入します。

db=# \set value 2

上の例では、value という変数に 2 を入れました。

前回の echo コマンドで、値を出力できます。

db=# \echo :value
2

SQL の中で使用することもできます。

db=# SELECT :value;

 ?column?
----------
        2
(1 row)

変数を使って SQL の条件を設定することもできます。

db=# \set start 3
db=# \set end 10
db=# \echo :start - :end
3 - 10

変数を設定して、WHERE 句で使用します。

db=# SELECT * FROM generate_series(1, 100) 
db-# WHERE generate_series between :start AND :end;

 generate_series
-----------------
               3
               4
               5
               6
               7
               8
               9
              10
(8 rows)

意味の無い SQL ですが、3 から 10 にしぼれています。

コマンドの結果も変数に代入できますが、 文字列を扱う場合、エスケープがちょっとややこしいです。

db=# \set today ''''`date +"%Y/%m/%d"`''''
db=# select :today;

  ?column?
------------
2012/12/15

Google サイト内検索

Amazonアソシエイト