Snowflake 中的列绑定变量

Posted

技术标签:

【中文标题】Snowflake 中的列绑定变量【英文标题】:Column bind variables in Snowflake 【发布时间】:2020-04-30 19:25:17 【问题描述】:

Snowflake 提供了(不寻常的)在表名中绑定变量的能力: https://docs.snowflake.com/en/sql-reference/literals-table.html

我想知道是否可以对列执行相同的操作,如下所示:

select count(1) from mytable where ? is null

【问题讨论】:

如果没有文档,我倾向于尝试看看它是否有效.. 我做到了,但它并没有完全奏效。我想知道是否有类似于他们为表参数化所做的事情,因为它是not normally something you can do 好吧,如果您使用存储过程,您可以这样做,因为您可以编写 SQL,最后我了解到没有预先计算的计划,因此允许变量表名称没有问题。允许我不了解您使用半动态 SQL 的上下文,但无法在该层形成完整的 SQL .. 也就是我们从我们在 aws 中运行的 node.js 应用程序中或将我们所有的 sql 转换为不在身边的任务,所以这就是全部,所以从那里可以编写我们所有的动态 sql 需求。 回答手头的问题并不重要,但如果你很好奇,我正在编写一个对某些视图进行大量数据质量检查的应用程序。视图的模型存储在 yaml 文件中,这些文件定义了每个视图的字段以及一些特征,如可空性或允许值。 是的,我绝对同意我可以自己连接字符串,但宁愿使用绑定变量来确保清理安全性和正确性 【参考方案1】:

如果我正确理解了这个问题,那么标识符文字就是您要查找的内容:

select count(1) from mytable where identifier(?) is null

文档:https://docs.snowflake.com/en/sql-reference/identifier-literal.html

【讨论】:

以上是关于Snowflake 中的列绑定变量的主要内容,如果未能解决你的问题,请参考以下文章

使用绑定变量在雪花中加载数据

使用“?::TIMESTAMP_NTZ”在查询中指定类型时,Snowflake JDBC 批量插入失败并显示“绑定变量?未设置”

雪花 - 使用绑定变量

雪花存储过程变量绑定错误

R:通过键变量绑定列

绑定变量的案例语句用法