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

标签 mysql sql regex

这对于基本的 SQL 来说可能足够简单,或者它可能需要一个 REGEXP,但我遇到了困难。

我的数据存储在一个 JSON 字符串中,就像这两个示例(每个都在 1 个字段中):

[{"id":"2","value":["1","3"]},{"id":"3","value":["1","2"]}]

和:

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

我想搜索最后一个括号之间的值,这些括号可能由许多数字 ["1","2","5"] 或 ["2"] 上的一个数字组成 .开头的数字对应于 2 个类别 - 单个 "id":"2""id":"3"

使用带有简单 LIKE 的 %"2"% 当然可以匹配所有内容。我可以通过 "id":"$var" 查询以返回每个类别,然后在我们得到结果后使用 PHP 对其进行过滤,但数据可能非常大,我敢肯定它是对于 SQL 专家来说很容易。

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

感谢任何帮助!谢谢。

最佳答案

我想我用这个解决了它:AND extra_fields REGEXP '(.*"id":"2".*)("\[.*"1".*\]")'。与 MySQL 相比,它更多地与正则表达式有关 :P

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

关于MySQL 查询以使用 JSON 字符串搜索字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5168872/

相关文章:

php - Mysqli 期望行数作为参数

javascript - Javascript 正则表达式元字符在括号内不起作用?

行首每组空格的正则表达式

python - 在正则表达式模式中查找可能组的名称

mysql - 从 2 个或不同表的列名中将值插入到表中?

mysql - Yii2 - 根据相关表中的计数检索模型

mysql - 从一个表中选择所有值并引用另一个表,但缺少该值

javascript - 卡在 Ajax 表单到 mysql 提交上

两张表之间的Mysql操作,并希望在一张表中输出

sql - 在 postgresql 查询中多次使用单个 WITH