I have a JSON column that stores an array of objects, each object having 2 properties:
[
{
"title" : "CALCULATED",
"applies" : true
},
{
"title" : "APPROVED",
"applies" : false
},
{
"title" : "RECIEVED",
"applies" : false
},
]
I want to SELECT all records where one of the objects matches a specific title and applies equals true.
What I've tried:
SELECT
col
FROM
table
WHERE
JSON_EXTRACT(col, '$[*].title') = "APPROVED" AND
JSON_EXTRACT(col, '$[*].applies');
This returns all records that have an object with title = "APROVED" and applies = true, but independent of each other. In the array I wrote as an example, it would return true because there is an object with title = "APPROVED" and there is another object with applies = true. I want to get all records where both are true on the same object.
You need to convert JSON array column to rows using
JSON_TABLEthen apply your condition in where clause :Demo here