如何从 json 列中获取键或值数据

Posted

技术标签:

【中文标题】如何从 json 列中获取键或值数据【英文标题】:how to get keys or values data from a json column 【发布时间】:2021-05-21 03:32:12 【问题描述】:

试图从json 列获取数据 - 如here 所述 表名 - 艺术 列名 - 顶部 内容示例:

"what": "video", "title": "antonio"

phpmyadmin 5.02内部查询:

SELECT tops->'$.title' tops FROM arts;  

结果 - 语法错误:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '>'$.title' tops FROM arts LIMIT 0, 25' at line 1

任何帮助

来自 phpmyadmin:Database client version: libmysql - mysqlnd 5.0.12-dev - 20150407

【问题讨论】:

未转载。 dbfiddle.uk/… 或者您是否收到this 语法错误? (请说明您使用的是哪个版本的 MySQL,以及确切的错误消息) 也许你有 PHP 问题?例如,您将查询文本包装为带有单引号的文字,并且不引用内部引号字符?或者你用 dquotes 包裹它并且不引用美元符号? 我怀疑你需要升级你的 MySQL 版本。 @Luuk - 请查看我的更新 【参考方案1】:

#1064 - 您的 SQL 语法有错误;查看与您的 MariaDB 服务器版本相对应的手册,了解在第 1 行的 '>'$.title' tops FROM Arts LIMIT 0, 25' 附近使用的正确语法

您的 DBMS 是 MariaDB,而不是 MySQL...

使用JSON_EXTRACT() 代替->

SELECT tops, JSON_EXTRACT(tops, '$.title') title FROM arts;  

fiddle

【讨论】:

以上是关于如何从 json 列中获取键或值数据的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Redshift 从 JSON 数组列中获取值?

如何从 NSDictionary 中获取键和值?

如果包含 json 文档作为字符串,如何从 MySQL(5.6) 列中获取值

当键或值很大时,为什么redis hash会从ziplist转换为hashtable?

如何从 MySQL 列中的 JSON 文档中获取最新值?

如何检查Map中是不是存在键或值?