我是Google BigQuery的新手,我发现SQL确实与普通SQL完全不同。我正在尝试从一个表中选择所有项目,该表在名为“ ticket_fields”的字段中具有数据。我不想要空值。我尝试了以下方法:
WHERE COLUMN <> ''
WHERE LEN(COLUMN) > 0
WHERE NULLIF(LTRIM(RTRIM(COLUMN)), '') IS NOT NULL
没有一个起作用。如何从一个特定字段中选择非空的所有记录?
答案 0 :(得分:2)
在某些系统中,空字符串和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
,所以WHERE
子句排除了该行。