sql >> Database >  >> RDS >> PostgreSQL

Hoe gebruik je scriptvariabelen in psql?

Postgres-variabelen worden gemaakt met het \set-commando, bijvoorbeeld ...

\set myvariable value

... en kan dan worden vervangen, bijvoorbeeld als ...

SELECT * FROM :myvariable.table1;

... of ...

SELECT * FROM table1 WHERE :myvariable IS NULL;

edit:vanaf psql 9.1 kunnen variabelen worden uitgebreid tussen aanhalingstekens zoals in:

\set myvariable value 

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

In oudere versies van de psql-client:

... Als u de variabele wilt gebruiken als de waarde in een voorwaardelijke tekenreeksquery, zoals ...

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

... dan moet je de aanhalingstekens in de variabele zelf opnemen, omdat het bovenstaande niet werkt. Definieer in plaats daarvan uw variabele als zodanig ...

\set myvariable 'value'

Als je echter, zoals ik, een situatie tegenkwam waarin je een string van een bestaande variabele wilde maken, vond ik de truc om dit te zijn ...

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

Nu heb je zowel een variabele tussen aanhalingstekens als een niet-geciteerde variabele van dezelfde string! En je kunt zoiets als dit doen ....

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


  1. Hoe het resultaat te sorteren van string_agg()

  2. Een Oracle Database 12c maken – Stap voor stap

  3. Oracle-procedure retourneert geen resultaten bij het uitvoeren van een scripttaak op SSIS

  4. Een overzicht van caching voor PostgreSQL