0

有没有一种方法可以在 MySQL 的 JSON 字段中搜索 la NoSQL?我的意思是,如果我存储,比如说,"{name: 'John', surname: 'Doe', age:'30'}"在一个VARCHAR字段中,我可以用类似的东西选择和过滤它

SELECT my_json_field FROM my_table where my_json_field.name = 'John'

问候

4

3 回答 3

1

Why not like this:

 SELECT my_json_field FROM my_table where my_json_field LIKE '% name:\'John\' %'

Or more general, depending on the structure of your my_json_field:

 SELECT my_json_field FROM my_table where my_json_field LIKE '% name: \'John\' %'
于 2012-08-23T12:59:36.620 回答
0

与操作员一起实施这样的功能like可能会降低性能。我建议为此目的使用 MySQL全文搜索而不是like.

create table my_table (my_json_field text);

ALTER TABLE my_table ADD FULLTEXT(my_json_field);

insert into my_table (my_json_field) values ("{name: 'John', surname: 'Doe', age:'30'}");

insert into my_table (my_json_field) values ("{name: 'Pope', surname: 'Benedict', age:'666'}");

select *
from my_table
where MATCH(my_json_field) AGAINST ("Pope" IN BOOLEAN MODE);
'{name: ''Pope'', surname: ''Benedict'', age:''666''}'

select * 
from my_table
where MATCH(my_json_field) AGAINST ("John" IN BOOLEAN MODE);
'{name: ''John'', surname: ''Doe'', age:''30''}'

您可能会注意到我没有在查询中添加“名称”文件名,因为它是一个停用词(在搜索词中被忽略)。

此外,如果要搜索“fieldname: 'value'”对,则必须找到一种处理特殊字符的方法。

于 2012-08-23T13:25:50.213 回答
0

哪有这回事。MySQL 只是不会理解 JSON 并且编写正则表达式匹配或其他任何东西都只是自找麻烦。

于 2012-11-26T11:33:43.957 回答