如何从 PostgreSQL 命令行 运行 参数化查询

How to run a parameterized query from the PostgreSQL command line

我想从 psql 命令行 运行 以下参数化查询:

SELECT *
FROM users
WHERE username = :username;

如何在命令行设置用户名参数?

我试过这个:

\set username 'john'

但是当我 运行 查询时,我收到以下错误消息:

ERROR:  column "john" does not exist
LINE 3: WHERE username = john;
                         ^

根据 psql 文档,要将 psql 变量作为文字替换为字符串,请使用 :'variablename'

这并不是通常意义上的参数化查询,因为变量被插入到查询字符串中。但是,psql 知道要转义单引号,因此变量值 ');DROP TABLE users;-- 将按字面意义出现而不是结束字符串,并且 运行 不需要 SQL.