Rumah > Soal Jawab > teks badan
Saya cuba mencari nilai userId 22 dari json bersarang dalam lajur mysql
Json saya ialah
'{ "data": [ {"calendarId":"11","userId": "12"}, {"calendarId":"21","userId": "22"} ] }'
Saya mencuba sintaks berikut:
1. where JSON_EXTRACT(column_field,'$.userId') = 22 2. where JSON_EXTRACT( column_field, '$.data[*].userId' ) = 22
P粉5548420912023-09-07 09:42:13
Ini:
select json_extract('{ "data": [ {"calendarId":"11","userId": "12"}, {"calendarId":"21","userId": "22"} ] }','$[0].data[*].userId');
Diberi: [“12”,“22”]
Dan ini:
select * from json_table(json_extract('{"data": [{"calendarId":"11","userId": "12"},{"calendarId":"21","userId": "22"}]}', '$[0].data[*].userId'), '$[*]' columns (value int path "$")) x ;
Diberi:
Nilai |
---|
12 |
22 |
Menambah klausa WHERE untuk mencari nilai sahaja 22
tidak sepatutnya menjadi masalah.
Nota: Perkara di atas telah diuji menggunakan MySQL 8.x, lihat: DBFIDDLE