Правильный способ передачи параметра запроса в C # в качестве аргумента оператору IN в BigQuery - PullRequest
0 голосов
/ 17 сентября 2018

Я хочу передать массив строк в качестве параметра запроса оператору 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"}),

Я получаю множество ошибок, в зависимости от того, что я пытаюсь:

  • Нет соответствующей подписи для оператора IN для типов аргументов STRING и {ARRAY }
  • Синтаксическая ошибка: ожидается "(" или ключевое слово SELECT или ключевое слово WITH, но получено "@"
  • Синтаксическая ошибка: ожидается "(" или ключевое слово UNNEST, но получено ключевое слово ARRAY
  • Синтаксическая ошибка: ожидается "(" или ключевое слово UNNEST, но получено "@"

1 Ответ

0 голосов
/ 17 сентября 2018

Используйте оператор UNNEST следующим образом:

SQL

where state IN UNNEST(@states)

C #

new BigQueryParameter("states", BigQueryDbType.Array, new[] {"AL", "CA"}) {ArrayElementType = BigQueryDbType.String},
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...