有一个表,其中有一列字符串类型,数据看起来像
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)
有什么建议吗?
根据实际数据,您可以尝试将其视为 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;