[英]MySQL selecting string with special characters
我在从数据库中选择字符串时遇到问题。 问题是,如果您在行中有McDonald's
,并且如果您使用字符串mcdonalds
进行搜索,它将找不到任何结果。 有什么建议么?
我忘了提到我在WHERE
句子中使用了LIKE
。
如果您的搜索要求是忽略某些字符,您可以在搜索期间通过将它们replace
为空白来删除它们。
这个答案解决了你的问题:
SELECT *
FROM restaurants
WHERE replace(name, '''', '') like '%mcdonalds%'; -- This will match "McDonald's"
仅供参考,单引号文字( '
)写为双引号( ''
),因此要将单引号指定为replace
参数,您需要连续四个引号( ''''
) - 每端两个中间的双引号表示实际报价。
转义你的特殊字符。
SELECT *
FROM restaurants
WHERE name='McDonald\'s';
我相信您正在寻找 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
……但这只是对整个情况的猜测。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.