我想知道是否可以在带有psql的SQL语句中的其他字符中间使用变量。
例如:
psql -v x=apple -f "example.sql"
使用example.sql:
SELECT * FROM :x;
工作正常。它被执行为:
SELECT * FROM apple;
但我如何处理example.sql类似的情况:
SELECT * FROM red_:x_pie;
我希望psql将其读作“red_apple_pie”,但我在“:”上收到语法错误。
感谢。
答案 0 :(得分:1)
你必须使用字符串连接:
DECLARE
x TEXT;
BEGIN
x = 'apple';
SELECT *
FROM "Food"
WHERE "Name" = 'red_' || x || '_pie';
我使用这个例子是因为它更容易理解(表名必须用引号括起来)。
答案 1 :(得分:0)
\set table_x 'red_' :x '_pie'
SELECT * FROM :table_x;