Rumah  >  Soal Jawab  >  teks badan

nilai carian mysql daripada json bersarang

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
  1. Juga cuba menggunakan JSON_Table tetapi tidak mendapat nilai json bersarang tepat dalam keadaan where.

P粉366946380P粉366946380410 hari yang lalu513

membalas semua(1)saya akan balas

  • P粉554842091

    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

    balas
    0
  • Batalbalas