В некоторых системах пустая строка и NULL
обрабатываются одинаково (например, Oracle).В BigQuery это разные значения, поэтому:
-- Returns TRUE
SELECT CAST(NULL AS STRING) IS NULL
-- Returns NULL
SELECT LENGTH(CAST(NULL AS STRING)) > 0
-- Returns TRUE
SELECT CAST(NULL AS STRING) IS NULL
-- Returns FALSE
SELECT '' IS NULL
-- Returns FALSE
SELECT LENGTH('') > 0
-- Returns TRUE
SELECT '' IS NOT NULL
Если вы хотите отфильтровать строки с столбцом NULL
, используйте IS NOT NULL
:
SELECT * FROM dataset.table WHERE column IS NOT NULL
Если выЕсли вы хотите отфильтровать строки с пустым столбцом или NULL
, вы можете просто проверить, что длина положительна:
SELECT * FROM dataset.table WHERE LENGTH(column) > 0
Это потому, что LENGTH(column)
возвращает NULL
, еслиcolumn
имеет значение null, поэтому предложение WHERE
исключает строку.