我有一个配置单元字段,其中数据以这种格式存储。
co_mx
["2.00","7570180962446"]
[3,"7566180246570"]
[6,"7577182138618"]
[10.00,"7573181367421"]
[10,"7573181433469"]
我想提取列表中的第二个元素,即较大的数字串。
当我在hivecliterminal中运行代码时,我只使用了两个转义字符(\),它可以工作,但是当使用 hive -e
要运行代码,我必须使用4个转义字符,但代码的粗体部分,即 then
case语句的一部分导致了一些我无法调试的问题。
select
cast(
trim(case
when instr(split(split(co_mx,'\\\\,')[1],'\\\\]')[0],'\\\\"')>0 then
**split(split(split(co_mx,'\\\\,')[1],'\\\\]')[0],'\\\\"')[1]**
else split(split(co_mx,'\\\\,')[1],'\\\\]')[0]
end)
as string) as id
from input_table
感谢你的帮助
1条答案
按热度按时间wfsdck301#
你不需要护盾
,
. 这应该很管用:split(co_mx,',')
你可以用[]
在许多情况下,对于这样的屏蔽:'[\"]'
-这里的逃生舱是用来装炮弹的。在这种情况下,一次越狱就足够了。使用rlike
而不是instr
.你的句子改写了: