PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Come usi le variabili di script in psql?

Le variabili Postgres vengono create tramite il comando \set, ad esempio ...

\set myvariable value

... e può quindi essere sostituito, ad esempio, come ...

SELECT * FROM :myvariable.table1;

... o ...

SELECT * FROM table1 WHERE :myvariable IS NULL;

modifica:a partire da psql 9.1, le variabili possono essere espanse tra virgolette come in:

\set myvariable value 

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

Nelle versioni precedenti del client psql:

... Se si desidera utilizzare la variabile come valore in una query di stringa condizionale, ad esempio ...

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

... quindi è necessario includere le virgolette nella variabile stessa poiché quanto sopra non funzionerà. Definisci invece la tua variabile come tale...

\set myvariable 'value'

Tuttavia, se, come me, ti sei imbattuto in una situazione in cui volevi creare una stringa da una variabile esistente, ho trovato il trucco essere questo ...

\set quoted_myvariable '\'' :myvariable '\''

Ora hai sia una variabile quotata che non quotata della stessa stringa! E puoi fare qualcosa del genere ....

INSERT INTO :myvariable.table1 SELECT * FROM table2 WHERE column1 = :quoted_myvariable;