繁体   English   中英

sql如何根据json格式字段值到select行?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM