首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么json_extract可以工作,而json_extract_scalar不能?

为什么json_extract可以工作,而json_extract_scalar不能?
EN

Stack Overflow用户
提问于 2020-06-18 07:18:53
回答 1查看 636关注 0票数 1

我有一个数据集,其中包含json中的一个列,它的一个属性为我提供了一个列表,我想取消它的嵌套以连接一些不同的数据。

我想到了json_extract_scalar的json_data,然后我可以split它,最后unnest与其他操作,但我得到了一个问题。

在我的例子中,当我运行json_extract时,它工作得很好,但我不能将其转换为varchar。另一方面,如果我使用json_extract_scalar,它会返回一个空值。

我认为问题应该是引号,但我不确定如何处理它-即使这是正确的问题。

让我给你一个数据样本:

代码语言:javascript
复制
{"my_test_list":["756596263-0","743349523-371296","756112380-0","755061590-0"]}

你们能给我点建议吗?

我在Presto中查询SQL。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-18 07:28:33

在key my_test_list下存储的是一个JSON数组,而不是一个标量值--这就是json_extract_scalar()返回null的原因。

目前还不清楚您希望如何使用这些数据。典型的解决方案是将其cast到一个array,然后您可以根据需要使用它,例如通过取消嵌套它。基本语法为:

代码语言:javascript
复制
cast(json_extract(mycol, '$.my_test_list') as array(varchar))

然后在横向联接中使用它,如下所示:

代码语言:javascript
复制
select t.mycol, x.myval
from mytable t
cross join unnest(
    cast(json_extract(mycol, '$.my_test_list') as array(varchar))
) as x(myval)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62439877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档