【发布时间】:2011-08-03 07:11:08
【问题描述】:
我正在尝试更正数据库中被双重转义的条目。我相信在使用 mysql_real_escape_string 时打开了magic_quotes。双重转义导致某些搜索结果不正确/丢失。
我已经关闭了magic_quotes,并计划搜索带有反斜杠的条目并更新它们以删除任何双重转义。麻烦的是,当我执行查询以搜索带有反斜杠的条目时,我总是没有得到任何结果。
SELECT title FROM exampletable WHERE title LIKE '%\\\\%'
我正在使用此处推荐的 '%\\\\%':http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html#operator_like
如果我输出每个标题,其中许多都有不需要的反斜杠,所以我知道它们在那里。我似乎无法在查询中隔离它们。
Example Data:
Old King\'s Road
Running Down A Dream
Can\'t Stop The Sun
This One's For Me
同样,只是尝试返回带有 \ 的条目。
编辑:MySQL 版本是 5.0.92-community。排序规则是 latin1_swedish_ci。字符集是 UTF-8 Unicode
%\\% 不起作用。我试过了。它在 mysql.com 上被列为不正确:
要搜索“\”,请将其指定为“\\\\”;这是因为反斜杠被解析器剥离一次,并在进行模式匹配时再次剥离,留下一个反斜杠进行匹配。
【问题讨论】:
-
您不需要搜索双斜杠。仅搜索
%\\%。如果你双重转义,一个\会被正确解析并且你的字段数据有一个额外的\,所以你只需要搜索一个! -
您使用的是什么版本的 MySQL?请发布您的创建表语句,以及数据库的默认字符集和排序规则。
-
MySQL 版本为 5.0.92-community。排序规则是 latin1_swedish_ci。字符集是 UTF-8 Unicode。抱歉,暂时没有 create table 语句。