直接看解決方案請翻到最后一行
1.Nullable列
優(yōu)點:允許Null值插入,在導數(shù)時對null值不需要額外處理
缺點,Nullable 列相比普通列需要額外的存儲空間且對性能有一些影響,且一些函數(shù)splitByString對Nullable列是不支持的
2.轉換處理
我們在建表時幾乎每個列都加上了Nullable,這就導致了處理這些列遇見一些問題
例如names Nullable(String)字段,我想要按逗號切分這個names
select splitByString(',',names) from table
會報如下錯誤
DB::Exception: Nested type Array(String) cannot be inside Nullable type (version 19.5.3.1)
那么如何解決這個問題呢?當然是把Nullable(String)轉換成String了
剛開始試一下了幾種方法
- toString(names)
- substring(name,1,length(name)) + 別名
- concat(names,'') + 別名
- 組合查詢
- 子查詢
發(fā)現(xiàn)并沒有什么 軟 用
后來換成cast(names as String)成功解決問題
select splitByString(',',cast(names as String)) from table