如何选择LEN> 0的所有项目

时间:2018-10-04 15:16:24

标签: google-bigquery

我是Google BigQuery的新手,我发现SQL确实与普通SQL完全不同。我正在尝试从一个表中选择所有项目,该表在名为“ ticket_fields”的字段中具有数据。我不想要空值。我尝试了以下方法:

WHERE COLUMN <> '' 

WHERE LEN(COLUMN) > 0

WHERE NULLIF(LTRIM(RTRIM(COLUMN)), '') IS NOT NULL

没有一个起作用。如何从一个特定字段中选择非空的所有记录?

1 个答案:

答案 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子句排除了该行。