如何在其他字符的中间使用psql变量?

时间:2013-07-23 18:08:58

标签: sql postgresql psql

我想知道是否可以在带有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”,但我在“:”上收到语法错误。

感谢。

2 个答案:

答案 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;