You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL如何在WHERE语句中指定参数,实现T-SQL示例的等效查询?

PostgreSQL等效写法说明

PostgreSQL中根据使用场景不同,有两种常见的等效实现方式:

场景1:psql命令行交互环境

直接使用客户端会话变量即可,写法如下:

-- 声明并赋值日期变量
\set start '2021-10-10'::date
\set end '2021-10-10'::date

-- 执行查询,引用变量时前面加冒号
SELECT *
FROM dbo."table"
WHERE date BETWEEN :start AND :end;

场景2:匿名代码块/函数/存储过程场景

如果是在PL/pgSQL逻辑中使用,需要用DECLARE块声明变量:

DO $$
DECLARE
    v_start DATE := '2021-10-10';
    v_end DATE := '2021-10-10';
BEGIN
    -- 可将查询结果存入临时表供后续调用
    CREATE TEMP TABLE IF NOT EXISTS query_result AS
    SELECT *
    FROM dbo."table"
    WHERE date BETWEEN v_start AND v_end;
END $$;

-- 查看查询结果
SELECT * FROM query_result;

注意事项

  • 原T-SQL示例存在笔误:连续两次声明了@start变量,第二次实际应该声明@end,上述PostgreSQL示例已经修正了该问题
  • PostgreSQL中table属于系统关键字,作为表名使用时需要用双引号包裹,作用等同于T-SQL中的方括号
  • 如果是在应用程序中调用该查询,直接使用预编译语句的参数占位符传参即可,不需要在SQL侧单独声明变量,逻辑和T-SQL用法一致。

内容的提问来源于stack exchange,提问作者white fang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 04:36:04