Presto 中包含 ' ' 字符的键的 JSON_EXTRACT 问题

2024-03-25

我正在使用 Presto(0.163) 来查询数据,并尝试从 json 中提取字段。

我有一个如下所示的 json,它出现在“style_attributes”列中:

"attributes": {
    "Brand Fit Name": "Regular Fit",
    "Fabric": "Cotton",
    "Fit": "Regular",
    "Neck or Collar": "Round Neck",
    "Occasion": "Casual",
    "Pattern": "Striped",
    "Sleeve Length": "Short Sleeves",
    "Tshirt Type": "T-shirt"
}

我无法提取“短袖”字段。 以下是我正在使用的查询:

从表中选择 JSON_EXTRACT(style_attributes,'$.attributes.Sleeve Length') 作为长度;

查询失败并出现以下错误 - 无效的 JSON 路径:“$.attributes.Sleeve Length”

对于没有“ ”(空格)的字段,查询运行正常。

我试图在 Presto 文档中找到解决方案,但没有成功。


presto:default> select json_extract_scalar('{"attributes":{"Sleeve Length": "Short Sleeves"}}','$.attributes["Sleeve Length"]');
     _col0
---------------
 Short Sleeves

or

presto:default> select json_extract_scalar('{"attributes":{"Sleeve Length": "Short Sleeves"}}','$["attributes"]["Sleeve Length"]');
     _col0
---------------
 Short Sleeves

JSON 函数变更

:func:json_extract和:功能:json_extract_scalar现在功能 支持方括号语法:

SELECT json_extract(json, '$.store[book]'); 
SELECT json_extract(json,'$.store["book name"]');

作为此更改的一部分,字符集 允许在非括号路径段中被限制为 字母数字、下划线和冒号。此外,冒号不能 用于未加引号的括号路径段。使用新的括号语法 用引号来匹配包含特殊字符的元素。

https://github.com/prestodb/presto/blob/c73359fe2173e01140b7d5f102b286e81c1ae4a8/presto-docs/src/main/sphinx/release/release-0.75.rst https://github.com/prestodb/presto/blob/c73359fe2173e01140b7d5f102b286e81c1ae4a8/presto-docs/src/main/sphinx/release/release-0.75.rst

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Presto 中包含 ' ' 字符的键的 JSON_EXTRACT 问题 的相关文章

  • 子查询与连接

    我重构了从另一家公司继承的应用程序的一个缓慢部分 以使用内部联接而不是子查询 例如 WHERE id IN SELECT id FROM 重构后的查询运行速度提高了约 100 倍 50 秒到 0 3 我预计会有改进 但谁能解释为什么它如此剧
  • 如何对主索引重新编号

    我有一个简单的 MySQL 表 主索引 id 不是一一编号的 1 31 35 100 等 我希望它们的编号如 1 2 3 4 请告诉我该怎么做 我还想指出的是 我知道该操作可能产生的后果 但我只是想整理一下表格 我同意其他方法也可以 但我只
  • Java/Hibernate - 异常:内部连接池已达到其最大大小,当前没有可用的连接

    我第一次在大学项目中使用 Hibernate 而且我还是个新手 我想我遵循了我的教授和我阅读的一些教程给出的所有指示 但我不断收到标题中的异常 Exception in thread main org hibernate Hibernate
  • MySQL:查询中周数的周日期范围

    我有一个看起来像这样的数据库表 id clock info 1 1262556754 some info 2 1262556230 some other info 3 1262556988 and another 4 1262555678
  • SQL:将一个表中的所有记录插入到另一表中,而不指定列

    我想将备份表 foo bk 中的所有记录插入到 foot 表中 而不指定特定的列 如果我尝试这个查询 INSERT INTO foo SELECT FROM foo bk 我会收到错误 插入错误 列名称或提供的值的数量与表定义不匹配 是否可
  • 优化mysql中日期类型字段的查询

    我目前准备了以下查询 select sum amount as total from incomes where YEAR date 2019 and MONTH date 07 and incomes deleted at is null
  • 如何在 SQL 中存储目标(例如 RPG Quest)

    今天有人问我他们应该如何将任务目标存储在 SQL 数据库中 在这种情况下 请考虑角色扮演游戏 目标可能包括以下一些内容 发现 地点 杀死 n MOB 类型 获取 对象 的 n 个 实现 技能组 中的 技能 你在角色扮演游戏中获得的所有其他东
  • 什么时候应该使用 XML 而不是 SQL? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • SQL 事务如何工作?

    我从事 SQL 工作的时间并不长 但我想我明白 通过将 SQL 语句包装在事务中 所有语句都会完成 或者都不会完成 这是我的问题 我有一个包含 lineitem 集合的订单对象 行项目在 order OrderId 上相关 我已经证实所有
  • 实体框架 - 查询可为空列时出现问题

    我在从具有可为空的tinyint 列的表中查询数据时遇到问题 问题似乎是查询生成为 AND CAST Extent1 PositionEffect AS int p linq 3 gt p linq 3 NULL 如果我手动运行该查询 它不
  • JOOQ 忽略具有默认值的数据库列

    看来JOOQ完全忽略了数据库列的默认值 既不会更新 ActiveRecord 对象 也不会在 INSERT 时跳过此列 相反 它尝试将其设置为 NULL 这在 NOT NULL 列上失败 Example CREATE TABLE bug f
  • 在Oracle中查找不包含数字数据的行

    我试图在一个非常大的 Oracle 表中找到一些有问题的记录 即使该列是 varchar2 列 也应包含所有数值数据 我需要找到不包含数字数据的记录 当我尝试在此列上调用 to number col name 函数时 它会抛出错误 我想你可
  • SQL Server:触发器如何读取插入、更新、删除的值

    我在一张表中有触发器并且想阅读UserId插入 更新或删除行时的值 怎么做 下面的代码不起作用 我收到错误UPDATED ALTER TRIGGER dbo UpdateUserCreditsLeft ON dbo Order AFTER
  • 交换 ms-sql 表

    我想以尽可能最好的方式交换到桌子 我有一个 IpToCountry 表 并根据导入的外部 CSV 文件每周创建一个新表 我发现进行切换的最快方法是执行以下操作 sp rename IpToCountry IpToCountryOld go
  • 在 MySQL 中插入时检查并防止相似字符串

    简要信息 我有3张桌子 Set id name SetItem set id item id position TempSet id 我有一个函数可以生成新的随机组合Item桌子 基本上 总是在成功生成之后 我在中创建一个新行Set表 获取
  • 显示一个表中的所有记录以及另一表中的匹配记录

    您好 我有一张下表 其中记录了活动和积分 Activites A ID Site ActivityValue ActivityName 1 site1 7 ActivityName1 2 site1 6 ActivityName2 2 si
  • 如何将列中的天数添加到 DB2 中的当前日期?

    我正在编写此 SQL 来动态计算一定的天数 如下所示 但我不知道如何让它工作 因为我不断收到错误 select Current Date Dynamic numbr of days calculation here from TableNa
  • 有没有办法在插入查询中执行另一个查询?

    好的 这是我的查询 我刚刚添加了 ACCOUNTID 和 accountID 部分 这显然不起作用 INSERT INTO Leads LEADID CREATEUSER CREATEDATE FIRSTNAME MODIFYDATE AC
  • 数据库级别的别名列名 [MySQL]

    别名 可能是错误的词 因为它是在将列 表名称作为查询中的其他名称引用的上下文中使用的 我感兴趣的是是否有一种方法可以在数据库中为列指定两个名称 如果我要打印这样的表格 它看起来会是这样的 mysql gt SELECT FROM User
  • Postgres 中 -Infinity 和 Infinity 的适当值

    在一种情况下 我们必须在 Postgres DB 中存储 无穷大和 无穷大的值 应该考虑什么合适的值 如果没有 请建议最合适的替代方案 你实际上可以使用 infinity and infinity for FLOAT4 and FLOAT8

随机推荐