有没有一种方法可以将参数传递给Google bigquery以在其“ IN”函数中使用

时间:2020-03-25 16:46:57

标签: node.js parameters google-bigquery

我当前正在编写一个通过其“ @ google-cloud / bigquery”:“ ^ 2.0.6”库访问google bigquery的应用程序。在我的一个查询中,我有一个where子句,我需要在其中传递ID列表。如果我像他们的示例一样使用UNNEST并传递字符串数组,则可以正常工作。

https://cloud.google.com/bigquery/docs/parameterized-queries

但是,我发现UNNEST可能真的很慢,只想单独使用IN并传递ID的字符串列表。无论我发送哪种格式的字符串列表,查询都将返回空结果。我认为这是因为它们转换参数以避免SQL注入的方式。我必须使用参数,因为我自己想避免对我的应用程序进行SQL注入攻击。如果我只传递一个id,它就可以正常工作,但是如果我传递一个列表,它就会炸毁,所以我认为这与格式化有关,但是我知道我的格式在IN通常期望的方面是正确的,即IN('' ,'')

有人能将参数传递给IN并起作用吗?即IN(@idParam)?

1 个答案:

答案 0 :(得分:0)

我们在脚本的开头声明了以下参数:

DECLARE var_country_ids ARRAY<INT64> DEFAULT [1,2,3];

并像这样使用:

WHERE if(var_country_ids is not null,p.country_id IN UNNEST(var_country_ids),true) AND ...

如您所见,我们也使用NULLarray表示法。我们看不到速度问题。