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

问题描述 投票:0回答:1

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

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

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

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

{ ids: '"1234", "4567"'}

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

这似乎很简单,但是我想不通为什么它不起作用,任何愿意帮助我的人?​​

提前谢谢您

node.js google-bigquery
1个回答
0
投票

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

因此,只要参数是一个字符串,如:

'1234,5678'

我们需要做:

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

REGEXP_EXTRACT_ALL-返回数组

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


推荐问答