語法
split(str string, regex string) -- 使用 regex 分割字符串 str
返回值為一個數組。
基本用法
select split('a,b,c,d', ',') from temp_cwh_test; -- 分割
-- 結果為數組
["a","b","c","d"]
截取字符串中某個值
select split('a,b,c,d', ',')[0] from temp_cwh_test;
-- 提取第1個值
a
可以指定提取結果數組中的某個值。
特殊字符的處理
針對特殊分割符號,需要特殊處理。
select split('122.122.122.122', '.') from temp_cwh_test;
-- 將出錯,無法得到預想結果
正確語法為:
select split('122.122.122.122', '\\.') from temp_cwh_test;
-- 結果
["122","122","122","122"]
當 split
包含在雙引號 " "
之中時,需要添加4個反斜杠。例如:
hive -e "... split('122.122.122.122', '\\\\.')"
否則得到的值為空值 NULL。
同樣的 | 等特殊符號需做類似處理。
有些特殊字符轉義只需要1個反斜杠,而有些需要2個反斜杠,需要注意測試一下。
參考鏈接1:hive函數 -- split 字符串分割函數
參考鏈接2:【Hive】split函數(分割字符串)