如何在DuckDB中声明并使用本地变量?
在DuckDB中声明并使用本地变量的方法
DuckDB没有提供像SQL Server那样的DECLARE本地变量语法,但可以通过以下几种方式实现类似的本地变量使用效果:
1. 使用WITH子句定义临时变量(单脚本内复用)
这种方式适合在单个SQL脚本中定义临时值,后续查询可直接引用:
WITH vars AS (SELECT 7 AS x) SELECT x * 2 FROM vars;
执行结果:14
2. 使用SET定义会话级变量(当前会话内全局有效)
通过SET语句定义的变量会在当前会话中持续有效,直到会话结束或手动重置:
-- 定义变量 SET x = 7; -- 引用变量(两种写法都支持) SELECT $x * 2; -- 或者直接使用变量名 SELECT x * 2;
执行结果:14
若需清除变量,执行RESET x;即可。
3. 使用PRAGMA定义配置类变量(不推荐用于临时计算)
这种方式更适合配置类场景,需要手动转换数据类型,使用相对繁琐:
PRAGMA set_setting('x', '7'); SELECT CAST(current_setting('x') AS INT) * 2;
执行结果:14
与SQL参数的区别
上述方式都是在SQL脚本内部定义并使用的变量,而SQL参数是从外部(如应用程序、客户端工具)传入的,二者作用范围和使用场景完全不同。
内容的提问来源于stack exchange,提问作者bouvierr
相关产品推荐
相关产品推荐

