在 Presto Athena 中将字符串转换为数组
Convert String to Array in Presto Athena
我是 SQL 的新人。我正在尝试在 WHERE IN 语句中传递一个列表。但是这些值在类似于这样的字符串中:
'["id1", "id2", "id3", "id4", "id5", "id6"]'
WHERE IN 语句不接受字符串但接受它:
WHERE IN (SELECT ids FROM unnested_id_related.id_related)
我可以使用 UNNEST 语句
得到这个table
CROSS JOIN
unnest(ids) AS unnested_id_related (id_related)
但是值 ids
需要是一个 ARRAY。任何人都知道如何将字符串转换为数组?或者在 WHERE IN 语句中传递此字符串的更好方法?
您的数据看起来像 json 数组,因此您可以 parse it 作为一个并转换为字符串数组:
select cast(json_parse('["id1", "id2", "id3", "id4", "id5", "id6"]') as array(varchar))
输出:
_col0
[id1, id2, id3, id4, id5, id6]
我是 SQL 的新人。我正在尝试在 WHERE IN 语句中传递一个列表。但是这些值在类似于这样的字符串中:
'["id1", "id2", "id3", "id4", "id5", "id6"]'
WHERE IN 语句不接受字符串但接受它:
WHERE IN (SELECT ids FROM unnested_id_related.id_related)
我可以使用 UNNEST 语句
得到这个tableCROSS JOIN
unnest(ids) AS unnested_id_related (id_related)
但是值 ids
需要是一个 ARRAY。任何人都知道如何将字符串转换为数组?或者在 WHERE IN 语句中传递此字符串的更好方法?
您的数据看起来像 json 数组,因此您可以 parse it 作为一个并转换为字符串数组:
select cast(json_parse('["id1", "id2", "id3", "id4", "id5", "id6"]') as array(varchar))
输出:
_col0 |
---|
[id1, id2, id3, id4, id5, id6] |