Azure Databricks SQL:如何向Struct列显式插入Null而非全Null结构体
Azure Databricks SQL:强制向结构体字段插入单个Null值
问题根源在于CASE语句中ELSE分支的NULL没有明确指定类型,Databricks执行INSERT时会自动将无类型的NULL转换为目标列结构体类型的空实例(所有字段为Null的结构体),而非真正的NULL值。
解决方法是通过CAST将NULL显式转换为目标列的结构体类型,确保类型严格匹配:
INSERT INTO my_table (target_column_name) SELECT CASE WHEN condition = true THEN NAMED_STRUCT('id', id_col, 'name', name_col) -- 替换为目标列实际的结构体类型定义 ELSE CAST(NULL AS STRUCT<`id`: INT, `name`: STRING>) END AS target_column_name FROM source_table
注意:STRUCT<>中的字段名、顺序和数据类型必须与目标表target_column_name列的结构体定义完全一致。
这样执行INSERT后,不满足条件的行就会插入真正的单个NULL值,无需拆分两次插入操作。
内容的提问来源于stack exchange,提问作者cornisto
相关产品推荐
相关产品推荐

