[英]sql how to select row based on json format field value?
我有一张表格,其中一张表格的格式是 json:
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"}
我怎样才能 select 所有“to_status”为 3 或 2 的行?
有朋友可以帮忙吗?
您可以使用 SELECT * FROM my_table WHERE JSON_EXTRACT(json_field, '$.to_status') IN (3, 2)
或者
SELECT * 从 my_table WHERE json_field->>'$.to_status' IN (3, 2)
到 select 你需要什么。
提取时 Json 值是字符串。 因此,您需要测试字符串值或将to_status
提取的值转换为 integer:
SELECT * FROM my_table WHERE json_field->>'to_status' in ('2','3');
or
SELECT * FROM my_table WHERE (json_field->>'to_status')::int in (2,3);
但是你可以得到相同的结果提取to_status_name
:
SELECT * FROM my_table WHERE json_field->>'to_status_name' = 'Completed';
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.