2017-01-16 2 views
0

ich json haben, die wieFinden Element in verschachtelten json mit json_extrct

sieht
[ 
    { 
"processor": "VISA", 
"mapping": { 
    "VSID": "161521582" 
} 
}, 
{ 
"processor": "MC", 
"mapping": { 
    "authAcquirerMID": "720000046943001", 
    "authAcquirerICA": "3286" 
} 
}, 
{ 
"processor": "MC", 
"mapping": { 
    "LocationId": "305901891" 
} 
}, 
{ 
"processor": "VISA", 
"mapping": { 
    "VSID": "72002961" 
} 
] 

Ich habe für die valuses von VSID bekommen beide "Prozessor": "VISA"? Wie werde ich das tun? Denn jetzt habe ich versucht

SELECT JSON_EXTRACT('[{"processor":"VISA","mapping":{"VSID":"161521582"}}, 
{"processor":"MC","mapping":{"authAcquirerMID":"720000046943001","authAcquirerICA":"3286"}}, 
{"processor":"MC","mapping":{"LocationId":"305901891"}}, 
{"processor":"MC","mapping":{"authAcquirerMID":"720000046943001","authAcquirerICA":"003286"}}, 
{"processor":"VISA","mapping":{"VSID":"72002961"}}, 
{"processor":"AMEX","mapping":{"targetingId":"1045006731"}}]', 
'$.mapping.VSID'); 

aber es gibt keine Ergebnisse. Jede Hilfe wäre willkommen.

+0

sind Sie sicher, dass die hier Werte sind in Ordnung für die gesamte Bahn ausgesetzt werden, um zu sehen ? – Qchmqs

Antwort

0

Sie müssen den Platzhalter-Operator verwenden es wie

in allen Arrays zu finden
'$[*].mapping.VSID' 

Probe

SELECT JSON_UNQUOTE(JSON_EXTRACT(
'[{"processor":"VISA","mapping":{"VSID":"161521582"}}, 
{"processor":"MC","mapping":{"authAcquirerMID":"720000046943001","authAcquirerICA":"3286"}}, 
{"processor":"MC","mapping":{"LocationId":"305901891"}}, 
{"processor":"MC","mapping":{"authAcquirerMID":"720000046943001","authAcquirerICA":"003286"}}, 
{"processor":"VISA","mapping":{"VSID":"72002961"}}, 
{"processor":"AMEX","mapping":{"targetingId":"1045006731"}}]' 
,'$[*].mapping.VSID')) as result; 

["161521582", "72002961"] 
+0

Vielen Dank – Shibon

Verwandte Themen