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