presto sql获取元素字符串来获取第一个和第二个项目

问题描述 投票:0回答:1

有一个表,其中有一列字符串类型,数据看起来像

items
['apple','pear','orange']
['weather','news']
.....

我怎样才能将第一个和第二个项目作为单独的列

预期产出

first_item     second_item
apple          pear
weather        news

尝试将列转换为数组然后对其进行切片但失败了

cast(itmes as array(varchar))

得到了

Cannot cast varchar to array(varchar)
有什么建议吗?

sql presto trino
1个回答
0
投票

根据实际数据,您可以尝试将其视为 JSON:

-- sample data
WITH dataset(items) AS (
   values ('["apple","pear","orange"]'),
    ('["weather","news"]')
)

-- query
select cast(json_parse(items) as array(varchar))[1] first_item, -- element_at
       cast(json_parse(items) as array(varchar))[2] second_item -- element_at
from dataset;

输出:

第一个项目 第二项
苹果 梨子
天气 新闻

或者只是:

-- query
select json_extract_scalar(items, '$[0]') first_item,
       json_extract_scalar(items, '$[1]') second_item
from dataset;
© www.soinside.com 2019 - 2024. All rights reserved.