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