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

时间:2018-09-17 06:50:21

标签: c# google-bigquery

我希望将字符串数组作为查询参数传递给IN运算符。我已经为此苦苦挣扎了一段时间,而我尝试的一切似乎都没有效果。我想知道这是否有可能。

我尝试了以下语法变体:

where state IN (@states)
where state IN @states
where state IN ARRAY(@states)
where state IN (ARRAY(@states))

这是C#的结尾:

new BigQueryParameter("states", BigQueryDbType.Array, new[] {"AL", "CA"}),
new BigQueryParameter("states", null, new[] {"AL", "CA"}),

根据我的尝试,我会遇到各种错误:

  • 参数类型STRING和{ARRAY }的操作符IN没有匹配的签名
  • 语法错误:预期为“(”或关键字SELECT或关键字WITH,但得到“ @”
  • 语法错误:应为“(”或关键字UNNEST,但关键字为ARRAY
  • 语法错误:应为“(”或关键字UNNEST,但得到的是“ @”

1 个答案:

答案 0 :(得分:1)

像这样使用UNNEST运算符:

SQL

where state IN UNNEST(@states)

C#

new BigQueryParameter("states", BigQueryDbType.Array, new[] {"AL", "CA"}) {ArrayElementType = BigQueryDbType.String},