我在一个使用?个占位符的脚本中有一个比较详细的查询.我想直接从psql命令行(在脚本之外)测试同一个查询.我希望避免进入并用实际值替换所有?,而是希望在查询之后传递参数.

例子:

SELECT  * 
FROM    foobar
WHERE   foo = ?
   AND  bar = ?
    OR  baz = ?  ;

寻找类似于:

%> {select * from foobar where foo=? and bar=? or baz=? , 'foo','bar','baz' };

推荐答案

你可以使用-v struct ,例如

psql -v v1=12  -v v2="'Hello World'" -v v3="'2010-11-12'"

然后将sql中的变量称为:v1、:v2等

select * from table_1 where id = :v1;

请注意我们如何使用两个引号" '...' "传递字符串/日期值

Postgresql相关问答推荐

如何在PostgreSQL 16中设置&Q;VARSIZE&Q;和&Q;SET_VARSIZE&Q;

将列类型从文本[]更改为jsonb[]

使用PythonPolar在PostgreSQL中存储

Gorm 中的更新将created_at、updated_at 作为默认时间

我应该如何更新热门表?

具有有限字母表的自定义字符串类型

如何创建一个触发器来传播对主键表的更新?

为什么 postgresql 可以在这个查询中高效地使用索引?

在 Ubuntu 11.04 服务器中启用对 postgresql 的 PHP 支持

如何在 Postgres 中的列上删除唯一约束?

查询仅属于特定部门的用户

在 PostgreSQL 中显示正在运行的查询的全文

从没有行的计数中获取 0 值

用于更改 postgresql 用户密码的 bash 脚本

使用 pg_dump 和 psql -U postgres db_name < ... 移动数据库会导致ERROR: relation "table_name" does not exist

如何使用 psql 执行 *.sql 文件

每个数据库提供程序类型允许的最大参数数是多少?

有没有办法确保 WHERE 子句在 DISTINCT 之后发生?

如何更改 PostgreSQL 中的日期样式?

在 OS X 上使用 Postgres.app 时如何将 psql 放在路径上?