0

我在 mysql 中有 json 类型的数据,列名是“student_data”。学生数据:

{"STUDENT_HISTORY": [{"regno": "12345678","UPDATE_DATE_UNIX_TIME": "65667"},{"regno": "12345332","UPDATE_DATE_UNIX_TIME": "654333"}]}

我需要根据 regno = "12345678" 的条件提取 student_data,这里我只有 regno 值不知道 json 中的索引,我也尝试了 json_extract 查询,如下所示。

SELECT JSON_EXTRACT(student_data,"$.STUDENT_HISTORY.regno") 
  FROM student table 
 WHERE STUDENT_HISTORY.regno = "12345678"
4

2 回答 2

1

如果您正在运行 MySQL 8.0,则可以使用json_table()

select s.*, x.*
from student s
cross join json_table(
    s.student_date,
    '$.STUDENT_HISTORY' columns (
        regno varchar(50),
        UPDATE_DATE_UNIX_TIME varchar(50)
    )
) x
where x.regno = '12345678'
于 2020-11-25T11:45:44.190 回答
0

您仍然可以使用JSON_EXTRACT()一些小的更改,例如

SELECT *
  FROM student 
 WHERE JSON_UNQUOTE(JSON_EXTRACT(`student_data`,'$.STUDENT_HISTORY[0].regno'))='12345678'

Demo

于 2020-11-25T11:51:39.817 回答