BigQuery - конкатенация String + EmptyString приводит к значению NULL - PullRequest
0 голосов
/ 22 января 2020

У меня есть два поля строкового типа «Источник» и «Деталь», причем любое из них имеет нулевое значение. Теперь я объединяю оба строковых поля, разделенных дефисом (-); но из-за значения NULL, вывод также NULL.

См. Изображение, состоящее из фактического выхода и ожидаемого результата (выделено желтым цветом).

Может кто-нибудь подсказать, как получить ожидаемый результат?

enter image description here

Запрос, который я использовал:

ВЫБРАТЬ источник, деталь, CONCAT (приведение (источник в виде строки), "-", приведение (деталь в виде строки)) AS фактический выход ОТ tablename

Ответы [ 2 ]

1 голос
/ 22 января 2020
SELECT Source, Detail, CONCAT(IFNULL(Source, ''), "-", IFNULL(Detail, '')) AS actualoutput 
FROM tablename   

Примечание: поскольку «Источник» и «Деталь» уже имеют тип STRING - вы можете опустить CAST'ing для STRING

1 голос
/ 22 января 2020

Используйте COALESCE для замены NULL пустой строкой:

SELECT
    Source,
    Detail,
    CONCAT(COALESCE(Source, ''), '-', COALESCE(Detail, '')) AS actualoutput
FROM tablename;

Обратите внимание, что все, что связано с NULL, всегда будет давать NULL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...