Các biến postgres được tạo thông qua lệnh \ set, chẳng hạn ...
\set myvariable value
... và sau đó có thể được thay thế, chẳng hạn như ...
SELECT * FROM :myvariable.table1;
... hoặc ...
SELECT * FROM table1 WHERE :myvariable IS NULL;
chỉnh sửa:Kể từ psql 9.1, các biến có thể được mở rộng trong dấu ngoặc kép như trong:
\set myvariable value
SELECT * FROM table1 WHERE column1 = :'myvariable';
Trong các phiên bản cũ hơn của máy khách psql:
... Nếu bạn muốn sử dụng biến làm giá trị trong truy vấn chuỗi có điều kiện, chẳng hạn như ...
SELECT * FROM table1 WHERE column1 = ':myvariable';
... thì bạn cần phải bao gồm các dấu ngoặc kép trong chính biến vì cách trên sẽ không hoạt động. Thay vào đó, hãy xác định biến của bạn như vậy ...
\set myvariable 'value'
Tuy nhiên, nếu, giống như tôi, bạn gặp phải tình huống mà bạn muốn tạo một chuỗi từ một biến hiện có, tôi đã tìm ra mẹo là thế này ...
\set quoted_myvariable '\'' :myvariable '\''
Bây giờ bạn có cả biến được trích dẫn và không được trích dẫn của cùng một chuỗi! Và bạn có thể làm điều gì đó như thế này ....
INSERT INTO :myvariable.table1 SELECT * FROM table2 WHERE column1 = :quoted_myvariable;