【问题标题】:Mariadb JSON_EXTRACT with condition on Json objectMariadb JSON_EXTRACT 与 Json 对象的条件
【发布时间】:2021-03-07 13:28:35
【问题描述】:

如何仅提取基于“id”=“BAR”的值

+------------------------------+
| data                         | 
+------------------------------+
| {"id": "FOO", "code": "FOO"} | 
| {"id": "BAR", "code": "BAR"} |
+------------------------------+

想要的输出

+------------------------------+
| code                         | 
+------------------------------+  
| BAR                          |
+------------------------------+

我试过了,但它不起作用。

 SELECT 
 JSON_EXTRACT(DATA, '$[*].code') as code
 FROM TABLETEST 
 where JSON_UNQUOTE(JSON_EXTRACT(data, '$[*].id')) ='BAR'

【问题讨论】:

    标签: mysql mysql-json mariadb-10.3


    【解决方案1】:

    如果你只是想在 id = "BAR" 时从 "code" 列获取数据,那么你要查找的 SQL 可能只是:

    SELECT `code` FROM `data` WHERE id = "BAR"
    

    【讨论】:

    • 它是一个 json 对象,例如 [ {"id": "FOO", "code": "hello"} , {"id": "BAR", "code": "bye"} ]
    • 我对这部分有点困惑:where JSON_UNQUOTE(JSON_EXTRACT(data, '$[*].id')) = 'BAR' 一般当你在 SQL 中使用 WHERE 关键字时,它是这样的:WHERE [column] = [value] 话虽如此,你也许可以实现这样做的期望结果 - SELECT JSON_EXTRACT(DATA, '$[*].code') as code FROM TABLETEST where id = 'BAR'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-02-04
    • 2021-03-31
    • 2020-07-22
    • 1970-01-01
    • 1970-01-01
    • 2020-05-02
    相关资源
    最近更新 更多