如何在MySQL中搜索具有JSON值的字段?

时间:2014-01-30 18:08:45

标签: mysql json

我有一个包含数据字段的MySQL列,如下所示:

["I don't read books anymore","books \/ novels"]

我想用“书籍/小说”检索所有字段。我怎么能这样做?我试过了:

SELECT * FROM `table` where data_field like '%books \/ novels%'

但是返回零结果。为什么?如何搜索JSON字段?

1 个答案:

答案 0 :(得分:2)

试试这个:

SELECT * FROM `table` WHERE date_field like '%books \\\\/ novels%' 

请参阅此处的注释: http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html#operator_like

  

因为MySQL在字符串中使用C转义语法(例如,\n来   表示换行符,您必须加倍使用的任何\   在LIKE字符串中。例如,要搜索\n,请将其指定为\\n。   要搜索\,请将其指定为\\\\;这是因为   反斜杠被解析器剥离一次,并在模式时再次剥离   匹配,留下一个反斜杠匹配。

正如您所指出的,以下内容不起作用,因为它可能与其他字符串匹配:

你可以试试这个:

SELECT * FROM `table` where data_field like '%books __ novels%'

或者可能是这样:

SELECT * FROM `table` where data_field like '%books _ novels%'

下划线是类似搜索中的单个字符外卡。