Hadoop和Hive都是用UTF-8编码的,hive用java写的,所以同Java一样都是'\'转义
很多函数会用到转义字符,比如split、regexp_replace等
但是有时候需要两个转义字符"\\",或者四个转义字符“\\\\”
- 单转义符'\':常规的为'\'进行字符串的转义
- 双转移符'\\':正则表达式匹配或者split函数中包含转义符
- 四个转义符'\\\\':split函数中存在转义符'\'为分隔符
- 分号:';'无法识别和转义,需要使用ASCII码处理(只要使用到了函数就会报错)
具体案例应用:
select 'a\b' as case1
,'a\\b' as case2
,'\134' as case3
,'\\' as case4
,'\;' as case5
,'\073' as case6
,split('a\\b','\\\\') as case7
,split('a\134b','\134\134') as case8
,split('a\;b','\;') as case9
,split('a\073b','\073') as case10
-- 使用针对需要转义的符号需要使用\进行转义
-- 使用ASCII码可以免除转义过程,但在函数中可能存在二次编码转义
查询结果: