如何比较MySQL 5.6中类似JSON的文本?
数据库管理系统:MySQL 5.6 我有一个表如何比较MySQL 5.6中类似JSON的文本?,mysql,json,Mysql,Json,数据库管理系统:MySQL 5.6 我有一个表tbl,其中列json存储类似json的文本,列的类型是text。列json如下所示 {"id": "123", "name": "foo", "age": "20"} 我试图选择条件为json.id='123'的行。查询select*from tbl,其中类似于json的“%”id“:“123”%”失败 我发现MySQL 5.6不支持Json函数。那么如何在WHERE子句中使用Json呢 追加 将JSON存储在单个列中的模式肯定不太合理。但是
tbl
,其中列json
存储类似json的文本,列的类型是text
。列json
如下所示
{"id": "123", "name": "foo", "age": "20"}
我试图选择条件为
json.id='123'
的行。查询select*from tbl,其中类似于json的“%”id“:“123”%”
失败
我发现MySQL 5.6不支持Json函数。那么如何在WHERE
子句中使用Json呢
追加 将JSON存储在单个列中的模式肯定不太合理。但是我不能修改模式,因为业务已经运行了一段时间。MySQL的版本也是出于同样的考虑。因此,我认为需要一个变通办法
select * from tbl where json like '%\"id\": \"123\"%'
试试这个。“我已转义”字符。使用
LOCATE
Select * from tbl where
LOCATE('"id": "123"','{"id": "123", "name": "foo", "age": "20"}') >0
试试这个,公共_模式用于json解析
SELECT json
FROM tbl
WHERE common_schema.extract_json_value(json ,'id')
LIKE "123%"
您没有-您规范化了数据(使用列
id
,name
,age
)或者至少规范化您选择数据的依据。您最好希望使用正则表达式来选择数据和/或像字符串一样进行搜索。如果可能的话,请使用PostgreSQL。它具有良好的@LukaszWiktor功能。如果可能的话,他肯定会使用MySQL 5.7(从5.7.8开始)@H2Ooooo很高兴知道MySQL也可以处理JSON。谢谢!@H2Ooooo当MySQL 5.7支持JSON查询时听起来很棒好主意,但当表中有很多类似于JSON字符串的行时,查询速度没有优化(JSON字符串)LOCATE like string.indexOf()函数在某种语言中