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