如何使用 presto 获取字符串列中的第一个元组

how to get the first tuple in a string column using presto

所以我在table中有一列,该列的数据类型是varchar,但它包含一个元组数组,所以我需要的是提取数组的第一个元组table

这是原文table

userid comments
1 [["hello world",1],["How did you",1],[" this is the one",1]]
2 [["hello ",1],["How ",1],[" this",1]]

这就是我要找的,请注意 'comments' 列的数据类型是 varchar.

userid comments
1 hello world
2 hello

json_extract_scalar 应该可以解决问题:

WITH dataset (userid, comments) AS (
    VALUES  (1, json '[["hello world",1],["How did you",1],[" this is the one",1]]'),
            (2, json '[["hello ",1],["How ",1],[" this",1]]')
)

--query
select userid,
    json_extract_scalar(comments, '$[0][0]')
from dataset

输出:

userid comments
1 hello world
2 hello

请注意,它只允许提取单个值,如果您想要多个值,则需要进行一些转换(类似于完成的 但使用数组,例如 array(json)) .