json - 如何使用 Presto JSON 函数访问字段名称中包含 "~"的 json 字段

标签 json presto trino

我的 json 字段中有一个“~”,例如“~id”。使用 Presto 0.75,我无法访问此类字段。以下是我迄今为止尝试过但没有成功的方法:

SELECT json_extract_scalar('{"id":"1","table":"test"}', '$.table');//这有效

SELECT json_extract_scalar('{"id":"1","~table":"test"}', '$.[\"~table\"]');//不起作用

SELECT json_extract_scalar('{"id":"1","~table":"test"}', '$.[\~table]');//不起作用

给出的错误是“无效的 JSON 路径:”

最佳答案

该 JSON 路径的正确形式是:'$["~table"]':

presto> SELECT json_extract_scalar('{"id":"1","~table":"test"}', '$["~table"]');

 _col0 
-------
 test  
(1 row)

以下事实可帮助您了解为什么您尝试的替代方案不起作用:

  • JSON 路径表达式用 SQL 字符串表示。唯一需要转义的字符是字符串分隔符(即单引号),而执行此操作的方法是使用另一个单引号。例如:'don't'don't 的 SQL 字符串文字。 SQL 字符串文字中的双引号不需要转义。
  • JSON 路径表达式支持两种访问属性的形式:字段访问和数组元素访问。如果您有一个名为“foo”的属性,则可以使用 '$["foo"]''$.foo' 访问它。字段访问语法仅适用于有效标识符(字母数字和下划线)的名称。

关于json - 如何使用 Presto JSON 函数访问字段名称中包含 "~"的 json 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27551948/

相关文章:

python - 谷歌 Dataproc Presto : how to run queries using Python

json - 是否有方便的工具来查看/分析 JSON 响应?

java - 写入文件时如何考虑JSON结构

sql - 如何在 SQL 中将相关行的值添加到列中

SQL COUNT(DISTINCT(field1)) GROUP BY MAX(filed2)

jsonpath - 如何在 Presto 中提取嵌套 json 数组对象中的键?

sql - 从prestosql中的日期列获取星期几?

json - 如何从 YouTube channel 检索所有视频 URL? json?

javascript - 使用带有 javascript 的 hashmap 计算重复的 JSON 数组值

mysql - 在 AWS Athena 中查询第一个非空值的动态 JSON 字段