[Mysql] Json 数据 in 查询 问题?该怎么写查询呢, v2 大神们帮忙瞅瞅撒

2017-10-11 20:26:16 +08:00
 xjmroot

[问题] 如何查询出 json_data 字段 里面所有项的任意一项,包含 1 的数据。v2 大神们帮忙瞅瞅撒

[备注] 每个 json_data 字段内都只有 3 项( country、province、city ),格式统一为{"country":[],"province":[],"city":[]}

--创建表
CREATE TABLE json_test (
	id INT (11) AUTO_INCREMENT PRIMARY KEY,
	json_data JSON #这是要查询的字段
) ENGINE INNODB ;
--插入数据,json 内包含 3 项 country、province、city、district
INSERT INTO `json_test` (json_data) VALUES ('{
    "country": [11,22,1],
    "province": [11,22,33],
    "city": [11,22]
}');
INSERT INTO `json_test` (json_data) VALUES ('{
    "country": [1,22,33],
    "province": [11,1,33],
    "city": [11,1]
}');
3321 次点击
所在节点    问与答
1 条回复
xjmroot
2017-10-12 10:20:27 +08:00
解决了,使用 json_contains+JSON_EXTRACT 就可以
这样查询
SELECT * FROM `json_test` WHERE json_contains(JSON_EXTRACT(json_data,'$.city'), '[1]');

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/396896

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX