Heim  >  Fragen und Antworten  >  Hauptteil

MySQL-Suchwert aus verschachteltem JSON

Ich versuche, nach dem Benutzer-ID-Wert 22 aus verschachteltem JSON in der MySQL-Spalte zu suchen

Mein JSON ist

'{
     "data": [
            {"calendarId":"11","userId": "12"},
            {"calendarId":"21","userId": "22"}
           ]
    }'

Ich habe die folgende Syntax ausprobiert:

1. where JSON_EXTRACT(column_field,'$.userId') = 22

2. where
JSON_EXTRACT(
column_field,
'$.data[*].userId'
) = 22
  1. Habe auch versucht, JSON_Table zu verwenden, habe aber nicht den genauen verschachtelten JSON-Wert in der Where-Bedingung erhalten.

P粉366946380P粉366946380410 Tage vor512

Antworte allen(1)Ich werde antworten

  • P粉554842091

    P粉5548420912023-09-07 09:42:13

    这个:

    select json_extract('{
         "data": [
                {"calendarId":"11","userId": "12"},
                {"calendarId":"21","userId": "22"}
               ]
        }','$[0].data[*].userId');

    给出:[“12”,“22”]

    还有这个:

    select * 
    from json_table(json_extract('{"data": [{"calendarId":"11","userId": "12"},{"calendarId":"21","userId": "22"}]}',
                    '$[0].data[*].userId'), 
                    '$[*]' columns (value int path "$")) x
    ;

    给出:

    12
    22

    添加 WHERE 子句,仅查找值 22 应该不是问题。

    附注以上是使用MySQL 8.x测试的,参见:DBFIDDLE

    Antwort
    0
  • StornierenAntwort