我有一些问题,找到一个带有where子句的记录,参数是JSON
格式。例如,JSON
列的值类似于["1","2","3"]
。当我运行where JSON_CONTAINS(tags, '["1"]')
时,它会抛出一个错误。
我想问的是如何获得每个JSON
列中值为1的所有记录?也许我可以使用PHP
,如果用低版本的mysql无法做到这一点。请有人知道这样做可以帮助我。谢谢你。
这是表记录的样本:
id | name | tags
---+---------+------------
1 | Jason | ["1","2"]
2 | Michael | ["4"]
3 | Sarah | ["1","3"]
4 | Lucy | ["2"]
我想在标签栏中显示值为1的Jason和Sarah。
您可以尝试使用LIKE
来检查字段是否包含结果;
SELECT * FROM jsondata WHERE tags LIKE '%"1"%'
但是,as outlined in this other answer在以这种方式阅读JSON时可能需要考虑转义字符和编码。