I have a JSON column "jobs" that looks like this:
[
{
"id": "1",
"done": "100",
"target": "100",
"startDate": "123123132",
"lastAction": "123123132",
"status": "0"
},
{
"id": "2",
"done": "10",
"target": "20",
"startDate": "2312321",
"lastAction": "2312321",
"status": "1"
}
]
I want to filter the array by object key values. For example: To find all items that have target > done
, status != 0
and lastAction is yesterday to get response like this:
[
{
"id": "1",
"done": "19",
"target": "100",
"startDate": "123123132",
"lastAction": "123123132",
"status": "0"
}
]
I know I can extract the data to a JSON_TABLE()
to do the filtering but I don’t get the original object back(unless I recreate it back) and the solution is not dynamic.
Can this kind of array filtering can really be done in MySQL?
2
Answers
Yes it is possible to do it using the JSON_EXTRACT and JSON_SEARCH functions.
Let’s say your table is named
tbl_Jobs
and thejobs
column is of type JSON.You also mentioned a condition on
lastAction
, but the example values you gave are not valid dates, so I’ll leave that enhancement to you. The example above demonstrates the technique.