在hive處理中,經常會遇到特殊字符,而這時候就需要對特殊字符處理,如果之前沒有接觸過特殊字符,處理起來會很麻煩。下面我就說一說hive轉義字符那點事。
工具/原料
hadoop,hive
crt或其他連接hive工具
方法/步驟
建立包含特殊字符的字符串,sql如下:
select concat_ws(' ','123','456','789') from dual;
其中concat_ws為連接函數,查詢結果為:
123 456 789
上面用特殊字符' '講幾個字符串合併,那麼接下來用split函數把拼好的字符串拆開,看看什麼效果
select split(concat_ws(' ','123','456','789'),' ')from dual;
結果: ["","1","2","3"," ","4","5","6"," ","7","8","9"]
上面的結果顯然不是正確的,那麼用'\'轉義呢,咱們再看看效果
select split(concat_ws(' ','123','456','789'),'\ ')from dual;
結果:["","1","2","3"," ","4","5","6"," ","7","8","9"]
結果跟上次一樣,還是不對,那麼怎麼才是正確的呢?試試下面的語句吧
select split(concat_ws(' ','123','456','789'),'\\ ')from dual;
結果:
這次的結果總算對了,總結下就是要有兩個'\'對特殊字符進行轉義。不信的話我們來試試其他函數的效果。
我們把' '替換為兩個0(即00),看看效果
select regexp_replace(concat_ws(' ','123','456','789'),'\\ ','00')from dual;
結果:1230045600789
上面的結果顯然是正確的。總結下,如果對hive特殊字符進行轉義處理,要用兩個\哦,即'\\'
注意事項
此方法為hive中的特殊字符轉義
如果用其他工具對hive進行封裝,很可能就不是兩個'\'了,很可能是三個、四個,或者更多,跟你封裝的工具有關,可以試試
如果覺得本文對你有幫助,請點贊哦