在hive处理中,经常会遇到特殊字符,而这时候就需要对特殊字符处理,如果之前没有接触过特殊字符,处理起来会很麻烦。下面我就说一说hive转义字符那点事。
工具/原料
1
hadoop,hive
2
crt或其他连接hive工具
方法/步骤
1
建立包含特殊字符的字符串,sql如下:select concat_ws('|','123','456','789') from dual;其中concat_ws为连接函数,查询结果为:123|456|789
2
上面用特殊字符'|'讲几个字符串合并,那么接下来用split函数把拼好的字符串拆开,看看什么效果select split(concat_ws('|','123','456','789'),'|')from dual;结果: ['','1','2','3','|','4','5','6','|','7','8','9']
3
上面的结果显然不是正确的,那么用'\'转义呢,咱们再看看效果select split(concat_ws('|','123','456','789'),'\|')from dual;结果:['','1','2','3','|','4','5','6','|','7','8','9']
5
这次的结果总算对了,总结下就是要有两个'\'对特殊字符进行转义。不信的话我们来试试其他函数的效果。我们把'|'替换为两个0(即00),看看效果select regexp_replace(concat_ws('|','123','456','789'),'\\|','00')from dual;结果:89
6
上面的结果显然是正确的。总结下,如果对hive特殊字符进行转义处理,要用两个\哦,即'\\'
注意事项
1
此方法为hive中的特殊字符转义
2
如果用其他工具对hive进行封装,很可能就不是两个'\'了,很可能是三个、四个,或者更多,跟你封装的工具有关,可以试试
3
如果觉得本文对你有帮助,请点赞哦
上一篇:怎样将本地文件导入Hive