【发布时间】:2012-01-10 17:31:21
【问题描述】:
我有一个包含人名的 MySql 数据库。当然也有以O'开头的名字。
如果我尝试使用这样的 sql 检索名称“O'Brien”:-
SELECT person_sname
FROM people
WHERE person_sname = 'O\\\'Brien'
然后我得到了预期的结果。但是,如果我尝试像这样检索所有以“O”开头的名称:-
SELECT person_sname
FROM people
WHERE person_sname like 'O\\\'Brien'
然后我得到一个空的结果集。我的目标是搜索like "O\\\'"。
是否有任何解释为什么会发生这种情况?我已经搜索了 MySql 手册,但找不到任何解释为什么我的搜索不应该按预期工作。
我发现的其他问题涉及存储转义字符串或使用= 检索它,它可以正常工作,我特别想在这种情况下使用like 子句。
澄清一下:我也尝试了以下方法:-
SELECT person_sname
FROM people
WHERE person_sname like 'O\'Brien' escape "\'"
SELECT person_sname
FROM people
WHERE person_sname like 'O\'Brien'
SELECT person_sname
FROM people
WHERE person_sname LIKE 'O\'Brien'
ESCAPE '~'
字符串在插入 db usimg mysql_real_escape_string() 时被转义并存储为 O\'Brien(例如)。
【问题讨论】:
标签: mysql