Hive concat函數連接后結果為null
concat函數是用來連接字符串的
使用示例:
select concat('Hello','World','Java');
運行結果:
最近我們在做需求的時候使用concat去拼接地址信息,腳本如下:(ta是我存放地址信息的表別名,地址分為三段存儲)
concat(trim(ta.houseaddress),' ',trim((ta.houseaddress2),' ',trim(ta.houseaddress3))
一般來說,我們會覺得這個沒問題吧,意思就是去掉每部分地址的前后空格,然后每段之間使用空格拼接。
但是我們在測試的時候就發現有問題耶,有很多地址信息不為空的數據都變為空了....
開始找原因:
發現是concat函數在連接null值的時候會將整個結果都會置為null
例如:
select concat('Hello','World','Java',null);
執行結果:
修正之后的地址連接信息腳本:
concat(trim(nvl(ta.houseaddress,'')),' ',trim(nvl(ta.houseaddress2,'')),' ',trim(nvl(ta.houseaddress3,'')))