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

时间:2015-11-24 23:43:13

标签: postgresql psql

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

SELECT *
FROM users
WHERE username = :username;

如何在命令行上设置username参数?

我试过了:

\set username 'john'

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

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

1 个答案:

答案 0 :(得分:3)

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

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