我在从数据库中选择字符串时遇到问题。问题是如果您有McDonald's
行,如果您使用字符串mcdonalds
进行搜索,则无法找到任何结果。有什么建议吗?
我忘了提到我在LIKE
句中使用WHERE
。
答案 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
......但这只是猜测情况的全部背景。