IN()表达式中的nodejs bigquery参数化查询

Posted

技术标签:

【中文标题】IN()表达式中的nodejs bigquery参数化查询【英文标题】:nodejs bigquery parameterised query inside IN() expression 【发布时间】:2020-03-26 05:52:21 【问题描述】:

我正在尝试使用 npm 模块 @google-cloud/bigquery 运行参数化查询。 像这样的:

SELECT * FROM myTable WHERE id IN (@ids);

我不知道 bigQuery 期望参数 id 的格式如何。

我的options.params 看起来像这样:

 ids: '"1234", "4567"'

但我没有得到任何结果。我知道有结果,我可以在 bigquery 中看到它们,如果我删除参数并只注入字符串就可以了。

看起来很简单,但我不知道为什么它不起作用,有谁愿意帮助我吗?

提前谢谢你

【问题讨论】:

我认为您需要将参数作为 ids: '1234, 4567' 传递。换句话说,id 应该是用逗号分隔的单个字符串。 谢谢@Dashzeveg 我很确定我也试过了,但对我没有用.. 【参考方案1】:

当然,我一发布问题就找到了解决方案... 感谢this thread!需要做一些体操......

所以只要参数是一个字符串,比如:

'1234,5678'

我们需要做的:

WHERE id IN UNNEST(REGEXP_EXTRACT_ALL(@ids,"[0-9a-zA-Z]+"))

REGEXP_EXTRACT_ALL - 返回一个数组

UNNEST - 如上面链接中所述,将 IN 子句的数组展平。

【讨论】:

以上是关于IN()表达式中的nodejs bigquery参数化查询的主要内容,如果未能解决你的问题,请参考以下文章

从谷歌云存储中的 csv 加载数据作为 bigquery 'in' 查询

在 C# 中将查询参数作为参数传递给 BigQuery 中的 IN 运算符的正确方法

BigQuery 问题中的正则表达式提取

bigquery 中的动态日期选择

BigQuery 中的正则表达式

如何使用带有 nodejs 的 bigquery 插入方法插入地理类型数据