小编典典

如何在 psql 中使用脚本变量?

all

在 MS SQL Server 中,我创建脚本以使用可自定义的变量:

DECLARE @somevariable int  
SELECT @somevariable = -1

INSERT INTO foo VALUES ( @somevariable )

然后,我将在运行时更改 的值@somevariable,具体取决于我在特定情况下想要的值。由于它位于脚本的顶部,因此很容易查看和记住。

我如何对 PostgreSQL 客户端做同样的事情psql


阅读 69

收藏
2022-08-24

共1个答案

小编典典

Postgres 变量是通过 \set 命令创建的,例如 …

\set myvariable value

…然后可以替换为…

SELECT * FROM :myvariable.table1;

… 或者 …

SELECT * FROM table1 WHERE :myvariable IS NULL;

编辑:从 psql 9.1 开始,变量可以用引号展开,如下所示:

\set myvariable value

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

在旧版本的 psql 客户端中:

…如果您想使用该变量作为条件字符串查询中的值,例如…

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

…那么您需要在变量本身中包含引号,因为上述方法不起作用。而是将您的变量定义为…

\set myvariable 'value'

但是,如果像我一样,您遇到想要从现有变量创建字符串的情况,我发现诀窍是......

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

现在你有同一个字符串的带引号和不带引号的变量!你可以做这样的事情......

INSERT INTO :myvariable.table1 SELECT * FROM table2 WHERE column1 = :quoted_myvariable;
2022-08-24