2

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

谢谢。

4

2 回答 2

1

您必须使用字符串连接:

DECLARE
x TEXT;

BEGIN
x = 'apple';

SELECT *
FROM "Food"
WHERE "Name" = 'red_' || x || '_pie';

我使用这个例子是因为它更容易理解(表名必须用引号括起来)。

于 2013-07-24T14:46:27.787 回答
0
\set table_x 'red_' :x '_pie'

SELECT * FROM :table_x;
于 2013-07-26T17:40:18.317 回答