sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur använder du skriptvariabler i psql?

Postgres-variabler skapas genom kommandot \set, till exempel ...

\set myvariable value

... och kan sedan ersättas till exempel som ...

SELECT * FROM :myvariable.table1;

... eller ...

SELECT * FROM table1 WHERE :myvariable IS NULL;

edit:Från och med psql 9.1 kan variabler utökas inom citattecken som i:

\set myvariable value 

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

I äldre versioner av psql-klienten:

... Om du vill använda variabeln som värdet i en villkorlig strängfråga, till exempel ...

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

... då behöver du inkludera citattecken i själva variabeln eftersom ovanstående inte kommer att fungera. Definiera istället din variabel som sådan ...

\set myvariable 'value'

Men om du, som jag, råkade ut för en situation där du ville göra en sträng från en befintlig variabel, fann jag att tricket var detta ...

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

Nu har du både en citerad och en variabel utan citat av samma sträng! Och du kan göra något sånt här ....

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


  1. Hur skapar man ett unikt index på en NULL-kolumn?

  2. TRANSLATE(… ANVÄNDER) Funktion i Oracle

  3. Hämta data med UTF-8-teckenuppsättning från MSSQL-server med PHP FreeTDS-tillägg

  4. Hur man installerar MySQL 8 med Workbench på Windows 10