I have a table ,one of the table filed is json format:
my_table
id json_field
1 { "to_status": 7, "to_status_name": "In Progress", "role": "admin"}
2 { "to_status": 3, "to_status_name": "Completed", "role": "admin"}
3 { "to_status": 2, "to_status_name": "Completed", "role": "customer"}
How can I select all rows that "to_status" is 3 or 2 ?
Any friend can help?
2
Answers
You can use
SELECT * FROM my_table
WHERE JSON_EXTRACT(json_field, ‘$.to_status’) IN (3, 2)
or
SELECT * FROM my_table
WHERE json_field->>’$.to_status’ IN (3, 2)
to select what you need.
When extracted Json values are strings. So you need to test for string values or cast
to_status
extracted values to an integer:But then you can get the same results extracting the
to_status_name
: