MySQL选择带有特殊字符的字符串

时间:2011-07-06 21:18:33

标签: mysql special-characters

我在从数据库中选择字符串时遇到问题。问题是如果您有McDonald's行,如果您使用字符串mcdonalds进行搜索,则无法找到任何结果。有什么建议吗?

我忘了提到我在LIKE句中使用WHERE

3 个答案:

答案 0 :(得分:6)

如果您的搜索要求是忽略某些字符,则可以在搜索过程中通过replace将其删除。

这个答案解决了你的问题:

SELECT *
FROM restaurants
WHERE replace(name, '''', '') like '%mcdonalds%'; -- This will match "McDonald's"

仅供参考,单引号文字(')被写为加倍的单引号(''),因此要将单引号指定为replace的参数,您需要四个引号连续('''') - 每端两个,实际报价中间加倍报价。

答案 1 :(得分:0)

逃离你的特殊角色。

SELECT *
FROM restaurants
WHERE name='McDonald\'s';

答案 2 :(得分:0)

我相信您正在寻找LIKE运营商:

http://dev.mysql.com/doc/refman/5.0/en/string-comparison-functions.html

编辑:

我尝试了很多不同的方法,我唯一的建议是使用你发送查询的任何代码,先将'\'转义添加到相应的字符。 PHP做得很好:

http://www.php.net/manual/en/function.mysql-real-escape-string.php

......但这只是猜测情况的全部背景。