有没有办法在 SQL Select 语句中使用来自 JSON 对象的值?

Posted

技术标签:

【中文标题】有没有办法在 SQL Select 语句中使用来自 JSON 对象的值?【英文标题】:Is there any way to use values from a JSON object in a SQL Select statement? 【发布时间】:2019-08-07 13:59:52 【问题描述】:

我想编写一个查询来选择 JSON 对象的属性中的值与给定字符串匹配的所有记录。例如,假设我有一个包含地址列的表,它是一个 JSON 对象。第一条记录的地址如下所示:


 "addressLine": "123 fake road"
 "city": "Buffalo"
 "state": "New York"

第二条记录的地址是这样的:


 "addressLine": "123 fake road"
 "city": "New Haven"
 "state": "Connecticut"

是否有可能在给定单词“New”的情况下编写一个查询,该查询将返回两条记录,因为 JSON 的值包含该字符串?谢谢!

【问题讨论】:

为您正在使用的 RDBMS 添加标签。 添加mysql标签后,查看我的答案更新 How to retrieve JSON data from mysql?的可能重复 【参考方案1】:

您可以使用 JSON_EXTRACT 函数:

SELECT * FROM Table WHERE json_extract(JsonColumn, '$.city') like 'New%'

其他信息

Functions That Search JSON Values Parsing json with mysql How to retrieve JSON data from mysql? How can write queries in MySQL that can parse JSON data in a column?

【讨论】:

如何回答这个问题?我在搜索某些内容的代码中看不到任何内容。而且我错过了对代码创始人的明确归属。 @PaulSpiegel json_extract(JsonColumn, '$.city') like 'New%' @PaulSpiegel 我提供了 OP 可以从中受益的方法,并展示了如何从 JSON 读取列的示例。怎么不相关?? 如果这回答了问题,那么它应该作为复制代码的位置的副本关闭。 @PaulSpiegel 我从 GitHub 复制了代码并提供了链接,此外,我还提供了与此问题类似的所有链接。此外,您有权将其标记为重复

以上是关于有没有办法在 SQL Select 语句中使用来自 JSON 对象的值?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法访问 SELECT 语句中的“上一行”值?

有没有办法选择引用游标的内容作为 SQL Select 语句的一部分?

SQL动态SELECT语句来自存储在表中的值

如何在同一个 select 语句中使用 count 和 group by

有没有办法更新一个表,并在一个语句中选择它?

sql select语句作为动态plsql块的绑定变量