Atsushi2022の日記

データエンジニアリングに関連する記事を投稿してます

BigQuery、比較演算子でNULLを比較

BigQueryで、比較演算子で比較される対象のどちらかがNULLだと結果はNULLになる。以下のクエリの結果はどちらもNULLになる。

SELECT CAST(NULL AS INT64) < 1;
SELECT CAST(NULL AS INT64) = CAST(NULL AS INT64);

以下の例だとNULL行と今日の日付の2行が存在しているが、WHERE句で今日の日付のみ取り出すとNULLになっている行は抽出されない。

WITH temp_table AS (
  SELECT CAST(NULL AS DATETIME) AS created_at
  UNION ALL SELECT CAST(CURRENT_DATE() AS DATETIME)
)
SELECT * FROM temp_table
WHERE created_at = CURRENT_DATE();