PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie verwenden Sie Skriptvariablen in psql?

Postgres-Variablen werden mit dem \set-Befehl erstellt, zum Beispiel ...

\set myvariable value

... und kann dann zB ersetzt werden durch ...

SELECT * FROM :myvariable.table1;

... oder ...

SELECT * FROM table1 WHERE :myvariable IS NULL;

Bearbeiten:Ab psql 9.1 können Variablen in Anführungszeichen erweitert werden wie in:

\set myvariable value 

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

In älteren Versionen des psql-Clients:

... Wenn Sie die Variable als Wert in einer bedingten Zeichenfolgenabfrage verwenden möchten, z. B. ...

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

... dann müssen Sie die Anführungszeichen in die Variable selbst einfügen, da das oben Gesagte nicht funktioniert. Definieren Sie stattdessen Ihre Variable als solche ...

\set myvariable 'value'

Wenn Sie jedoch, wie ich, auf eine Situation gestoßen sind, in der Sie einen String aus einer vorhandenen Variablen erstellen wollten, fand ich den Trick hier ...

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

Jetzt haben Sie sowohl eine in Anführungszeichen gesetzte als auch eine nicht in Anführungszeichen gesetzte Variable derselben Zeichenfolge! Und Sie können so etwas tun ....

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