首页 > 解决方案 > IN()表达式中的nodejs bigquery参数化查询

问题描述

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

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

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

我的options.params样子是这样的:

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

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

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

先感谢您

标签: node.jsgoogle-bigquery

解决方案


当然,我一发布问题就找到了解决方案……感谢这个帖子!需要做体操...

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

'1234,5678'

我们需要做:

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

REGEXP_EXTRACT_ALL - 返回一个数组

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


推荐阅读