Postgres変数は、\ setコマンドを使用して作成されます(例:...
)。\set myvariable value
...そして、たとえば...
のように置き換えることができますSELECT * FROM :myvariable.table1;
...または...
SELECT * FROM table1 WHERE :myvariable IS NULL;
編集:psql 9.1以降、変数は次のように引用符で囲むことができます:
\set myvariable value
SELECT * FROM table1 WHERE column1 = :'myvariable';
古いバージョンのpsqlクライアントの場合:
...変数を条件付き文字列クエリの値として使用する場合(...
など)SELECT * FROM table1 WHERE column1 = ':myvariable';
...上記は機能しないため、変数自体に引用符を含める必要があります。代わりに、変数をそのように定義してください...
\set myvariable 'value'
しかし、私のように、既存の変数から文字列を作成したいという状況に遭遇した場合、そのトリックはこれであることがわかりました...
\set quoted_myvariable '\'' :myvariable '\''
これで、同じ文字列の引用符で囲まれた変数と引用符で囲まれていない変数の両方ができました。そして、あなたはこのようなことをすることができます....
INSERT INTO :myvariable.table1 SELECT * FROM table2 WHERE column1 = :quoted_myvariable;