PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como você usa variáveis ​​de script no psql?


As variáveis ​​Postgres são criadas através do comando \set, por exemplo...
\set myvariable value

... e pode então ser substituído, por exemplo, como ...
SELECT * FROM :myvariable.table1;

... ou ...
SELECT * FROM table1 WHERE :myvariable IS NULL;

edit:A partir do psql 9.1, as variáveis ​​podem ser expandidas entre aspas como em:
\set myvariable value 

SELECT * FROM table1 WHERE column1 = :'myvariable';

Em versões mais antigas do cliente psql:

... Se você quiser usar a variável como o valor em uma consulta de string condicional, como ...
SELECT * FROM table1 WHERE column1 = ':myvariable';

... então você precisa incluir as aspas na própria variável, pois o acima não funcionará. Em vez disso, defina sua variável como tal ...
\set myvariable 'value'

No entanto, se, como eu, você se deparar com uma situação em que deseja criar uma string a partir de uma variável existente, descobri que o truque é esse ...
\set quoted_myvariable '\'' :myvariable '\''

Agora você tem uma variável entre aspas e sem aspas da mesma string! E você pode fazer algo assim ....
INSERT INTO :myvariable.table1 SELECT * FROM table2 WHERE column1 = :quoted_myvariable;