为了避免在使用 SQL 的 EXPLODE
函数时产生多余的空值,您可以在查询中使用 WHERE
子句来过滤空值
SELECT id, value FROM my_table LATERAL VIEW EXPLODE(my_array) my_table_exploded AS value WHERE value IS NOT NULL;
这个查询将会返回 my_table
表中每一行的 id
和 my_array
列中的元素。通过使用 LATERAL VIEW EXPLODE
,我们将 my_array
列中的每个元素扩展为一行。然后,我们使用 WHERE
子句过滤掉值为 NULL 的行。
请注意,不同的数据库管理系统可能有不同的语法。上面的示例适用于 Apache Hive 和 Apache Spark SQL。如果您使用的是其他数据库,请查阅相应的文档以获取正确的语法。