Reputation: 229
How do I extract only value based on "id" = "BAR"
+------------------------------+
| data |
+------------------------------+
| {"id": "FOO", "code": "FOO"} |
| {"id": "BAR", "code": "BAR"} |
+------------------------------+
desired output
+------------------------------+
| code |
+------------------------------+
| BAR |
+------------------------------+
I tried with this but it does not work.
SELECT
JSON_EXTRACT(DATA, '$[*].code') as code
FROM TABLETEST
where JSON_UNQUOTE(JSON_EXTRACT(data, '$[*].id')) ='BAR'
Upvotes: 1
Views: 751
Reputation: 1053
The more straight forward solution is to use:
WHERE JSON_CONTAINS(JSON_EXTRACT(data, "$[*].id"), 'BAR');
Like:
SELECT
JSON_EXTRACT(DATA, '$[*].code') as code
FROM TABLETEST
WHERE JSON_CONTAINS(JSON_EXTRACT(data, "$[*].id"), 'BAR');
Upvotes: 0