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.
2
Answers
If you just want to get data with
title
= "APROVED" andapplies
= true, you can do this:I have create https://dbfiddle.uk/hrM80a8c .
Please check
You need to convert JSON array column to rows using
JSON_TABLE
then apply your condition in where clause :Demo here