一尘不染

MySQL查询以JSON字符串搜索字段

sql

使用基本SQL可能很简单,或者可能需要REGEXP,但我遇到了麻烦。

我的数据存储在JSON字符串中,如以下两个示例所示(每个字段1个字段):

[{“ id”:“ 2”,“值”:[“ 1”,“ 3”]},{“ id”:“ 3”,“值”:[“ 1”,“ 2”]}]

和:

[{“ id”:“ 3”,“ value”:[“ 2”]},{“ id”:“ 3”,“ value”:[“ 1”,“ 2”,“ 5”]}]

我想在可能包含许多数字的最后一个括号之间搜索值["1","2","5"] or just a single on ["2"]。开头的数字对应于2个类别-
单身"id":"2""id":"3"

使用%"2"%简单的LIKE当然可以匹配所有内容。我可以按"id":"$var"进行查询以返回每个类别,然后在获得结果后使用PHP对其进行过滤,但是数据可能会很大,并且我相信对于SQL专家而言这很容易。

我没有选择更改字段格式的选项,它必须保留为JSON。

任何帮助表示赞赏!谢谢。


阅读 311

收藏
2021-03-17

共1个答案

一尘不染

我想我是通过使用以下方法解决的:AND extra_fields REGEXP '(.*"id":"2".*)("\[.*"1".*\]")'。正则表达式比MySQL:P更多

comment :(我找不到评论按钮)
当您了解“ extra_fields”是表中列的名称时,此语法会变得更清晰

2021-03-17