Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何比较MySQL 5.6中类似JSON的文本?_Mysql_Json - Fatal编程技术网

如何比较MySQL 5.6中类似JSON的文本?

如何比较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存储在单个列中的模式肯定不太合理。但是

数据库管理系统: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存储在单个列中的模式肯定不太合理。但是我不能修改模式,因为业务已经运行了一段时间。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()函数在某种语言中