如何使用 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)
) .
所以我在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)
) .