как передать null = null в предложении where - PullRequest
0 голосов
/ 25 ноября 2018

У меня есть оператор выбора bigquery, где в некоторых случаях предложения where показывают null = null

В случае этого оператора:

select * from `db.ds.table1` t1
join `db.ds.table2` t2
on t1.first_name = t2.first_name
and t1.last_name = t2.last_name

, как вы можете видеть, это будетпохоже, ищет людей, однако, в некоторых случаях у меня есть бизнес в таблицах.В этих случаях используется first_name, а last_name равно нулю.

это означает, что у меня есть null = null scenerio, и соединение не выполняется.

Как мне сказать bigquery, чтобы разрешитьnull = null, без необходимости помещать слияния повсеместно?

Спасибо

Ответы [ 2 ]

0 голосов
/ 25 ноября 2018
#standardSQL
select * from `db.ds.table1` t1
join `db.ds.table2` t2
on t1.first_name = t2.first_name
and ifnull(t1.last_name, '') = ifnull(t2.last_name, '')   

очевидно, если ifnull эквивалентно coalesce, поэтому не уверен, что это то, что вы можете принять, так как упомянули, что по какой-то причине вы не хотите использовать coalesce

0 голосов
/ 25 ноября 2018

Сделать фамилию необязательной и разрешить обеим фамилиям быть NULL как действительные:

SELECT *
FROM `db.ds.table1` t1
INNER JOIN `db.ds.table2` t2
    ON t1.first_name = t2.first_name AND
       (t1.last_name = t2.last_name OR (t1.last_name IS NULL AND t2.last_name IS NULL));

Мы могли бы также попытаться написать запрос, используя COALESCE, но это не совсем понятнокакое значение следует использовать вместо NULL фамилии.

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