很简单。我有一个类似数组的列,编码为字符串varchar
(array
explode
两种最自然的方法似乎不起作用:
-- just returns a length-1 array with a single string element '[1, 2, 3]'
select array('[1, 2, 3]')
-- errors: DataType array is not supported.
select cast('[1, 2, 3]' as array)
获得我想要的东西的丑陋/不优雅/迂回的方式是:
select explode(split(replace(replace('[1, 2, 3]', '['), ']'), ', '))
-- '1'
-- '2'
-- '3'
(regexp_replace
可以包含这两者replace
,但带方括号的正则表达式总是很痛苦;ltrim
或者rtrim
也trim(BOTH '[]'...)
可以使用)
有没有更简洁的方法来解决这个问题?我在 Spark 2.3.1 上。