这对于基本的 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/