hive中的轉義字符?

在hive處理中,經常會遇到特殊字符,而這時候就需要對特殊字符處理,如果之前沒有接觸過特殊字符,處理起來會很麻煩。下面我就說一說hive轉義字符那點事。

工具/原料

hadoop,hive

crt或其他連接hive工具

方法/步驟

建立包含特殊字符的字符串,sql如下:

select concat_ws(' ','123','456','789') from dual;

其中concat_ws為連接函數,查詢結果為:

123 456 789

hive中的轉義字符

上面用特殊字符' '講幾個字符串合併,那麼接下來用split函數把拼好的字符串拆開,看看什麼效果

select split(concat_ws(' ','123','456','789'),' ')from dual;

結果: ["","1","2","3"," ","4","5","6"," ","7","8","9"]

hive中的轉義字符

上面的結果顯然不是正確的,那麼用'\'轉義呢,咱們再看看效果

select split(concat_ws(' ','123','456','789'),'\ ')from dual;

結果:["","1","2","3"," ","4","5","6"," ","7","8","9"]

hive中的轉義字符

結果跟上次一樣,還是不對,那麼怎麼才是正確的呢?試試下面的語句吧

select split(concat_ws(' ','123','456','789'),'\\ ')from dual;

結果:

hive中的轉義字符

這次的結果總算對了,總結下就是要有兩個'\'對特殊字符進行轉義。不信的話我們來試試其他函數的效果。

我們把' '替換為兩個0(即00),看看效果

select regexp_replace(concat_ws(' ','123','456','789'),'\\ ','00')from dual;

結果:1230045600789

hive中的轉義字符

上面的結果顯然是正確的。總結下,如果對hive特殊字符進行轉義處理,要用兩個\哦,即'\\'

注意事項

此方法為hive中的特殊字符轉義

如果用其他工具對hive進行封裝,很可能就不是兩個'\'了,很可能是三個、四個,或者更多,跟你封裝的工具有關,可以試試

如果覺得本文對你有幫助,請點贊哦

相關問題答案