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' 查询