В USQL я получаю ошибку преобразования для NULL, хотя я использую тип NULL, например int ?, datetime?и т.п. - PullRequest
0 голосов
/ 31 мая 2018

Когда я меняю тип на строку, я в порядке.Но когда я использую int ?, datetime?и т. д., иногда он принимает NULL, а иногда - с ошибкой.

"Проблема при преобразовании входной строки" NULL "в правильный тип."

1 Ответ

0 голосов
/ 12 июня 2018

Если передать следующее содержимое файла:

31|NULL|1

следующему выражению EXTRACT:

@data = 
  EXTRACT a int?, b int?, c int? 
  FROM @file 
  USING Extractors.Text(delimiter:'|');

, вы получите сообщение об ошибке, которое вы наблюдаете, поскольку NULL обрабатывается какстрока.Способ по умолчанию для сериализации и анализа нулевых значений с помощью встроенных экстракторов / выходов заключается в отсутствии значения, например, 31||1.Хотя встроенные экстракторы предоставляют вам параметр nullEscape.Так что попробуйте:

… USING Extractors.Text(delimiter:'|', nullEscape:"NULL");
...