sql - 为什么 json_extract 有效但 json_extract_scalar 无效?
问题描述
我有一个数据集,其中包含 json 中的一个列,其中一个属性给了我一个列表,我想将其取消嵌套以加入一些不同的数据。
我想到json_extract_scalar
了 json_data,然后我可以split
,最后unnest
用其他操作,但是我遇到了问题。
就我而言,当我运行它时json_extract
它工作正常,但我无法转换为 varchar。另一方面,如果我使用json_extract_scalar
它返回一个空值。
我认为问题应该是引号,但我不确定如何处理它——即使这是正确的问题。
让我给你一个数据样本:
{"my_test_list":["756596263-0","743349523-371296","756112380-0","755061590-0"]}
大家能给我一些建议吗?
我在 Presto 中查询 SQL。
解决方案
您在 key 下存储的my_test_list
是 JSON 数组,而不是标量值 - 这就是为什么json_extract_scalar()
返回null
.
目前还不清楚您想如何使用这些数据。一个典型的解决方案是cast
它array
,然后您可以根据需要使用它,例如通过取消嵌套它。基本语法是:
cast(json_extract(mycol, '$.my_test_list') as array(varchar))
然后,您将在横向连接中使用它,例如:
select t.mycol, x.myval
from mytable t
cross join unnest(
cast(json_extract(mycol, '$.my_test_list') as array(varchar))
) as x(myval)
推荐阅读
- java - 泛型 java : 类型安全警告
- python - 如何在 PyCharm 中一次关闭所有打开的终端实例
- r - 如何在具有多个嵌套因子级别但没有子集数据的 EMMEAN 中进行特定的自定义对比
- java - ErrorCode: onResponse: 401 in retrofit android
- c - C - 子进程显示在错误的位置
- android - 尝试使用expo将本机应用程序连接到firebase
- google-apps-script - 将多行复制的内容添加到单独工作表中的新行的最佳方法是什么?
- docker - Docker 在 PHP-FPM 上运行 symfony
- python - 字典json pytjon中列表项的总和
- jsf - Primefaces 带有 closeOnEscape 的多个对话框