我有一个包含数据字段的MySQL列,如下所示:
["I don't read books anymore","books \/ novels"]
我想用“书籍/小说”检索所有字段。我怎么能这样做?我试过了:
SELECT * FROM `table` where data_field like '%books \/ novels%'
但是返回零结果。为什么?如何搜索JSON字段?
答案 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%'
下划线是类似搜索中的单个字符外卡。