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

标签 postgresql psql

我想从 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。

关于postgresql - 如何从 PostgreSQL 命令行运行参数化查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33905993/

相关文章:

postgresql - 如何在 pgAdmin 中声明变量

postgresql - 在 Postgres 中使用 ROWTYPE 变量更新行

postgresql - Postgres Docker 的 DataGrip 连接失败

python - psycopg2 - 使用带有 execute_values 的 SQL 对象

bash - 在循环中打印 sql 查询的单个数据到 stroud

postgresql - postgres在时间列上选择查询生成输出错误

sql - Postgres 中没有子查询的总计算百分比

sql - 模式是否应该始终在 SQL 语句中显式定义?

database - 错误 :must be owner of database

database - 我在我的 mac 上设置了 psql 和 pgadmin。我可以在两者上创建数据库和表,但它们似乎没有连接