考虑到Mysql表中的一个字段(sample_field)有“你的数据”,当我查询同一个表时
SELECT * FROM sample_table WHERE sample_field = "your\'s data"
也喜欢
SELECT * FROM sample_table WHERE sample_field = "your's data"
上述两个查询都返回0行,即使sample_field
的值为“您的数据”
经过长时间的搜索,我才知道,我的搜索将是
SELECT * FROM sample_table WHERE sample_field = "your\\\'s data"
工作得非常好。但
SELECT * FROM sample_table WHERE sample_field LIKE "your\\\'s data"
无效。因此,如果我想搜索带引号的任何产品或类别(例如“您的数据”),在网站搜索中我必须使用LIKE
关键字和通配符模式('%')。
现在我找到了答案,如果我这样尝试
SELECT * FROM sample_table WHERE sample_field LIKE "your\\\\'s data"
在http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html#operator_like中给出,它工作正常。
但请让我知道为什么需要这4个反斜杠才能实现这个目标?
提前致谢
答案 0 :(得分:3)
如果你想让它成为字面上的反斜杠,你必须逃避逃避反斜杠:
WHERE sample_field = "your\\'s data"
但实际上,首先在数据库中使用反斜杠是错误,而是修复它。
答案 1 :(得分:1)
因为MySQL在字符串中使用C转义语法(例如,“\ n”表示换行符),所以必须将在LIKE字符串中使用的任何“\”加倍。例如,要搜索“\ n”,请将其指定为“\ n”。要搜索“\”,请将其指定为“\\”;这是因为反斜杠被解析器剥离一次,并且在进行模式匹配时再次剥离,留下一个反斜杠来匹配。
答案 2 :(得分:0)
试试这样:
... WHERE sample_field = 'your\'s data'