为什么MySQL
可以查询
SELECT name
FROM groups
WHERE name = 'WEB '
注意到所有尾随空格。我希望这不会返回任何行,因为组WEB
存在,但不是WEB
的尾随空格。如何强制MySQL完全查询而不是自动修剪WHERE
子句中的尾部空格?
答案 0 :(得分:3)
解决方案是使用BINARY
。
SELECT name
FROM groups
WHERE name = BINARY 'WEB '
答案 1 :(得分:0)
您需要使用LIKE运算符而不是'='符号
SELECT name FROM groups WHERE name like 'WEB '
另一种解决方案是您也可以使用BINARY关键字。
Binary Function: - 这是MySQL提供的用于逐字节比较列的函数,可用于执行区分大小写的搜索。
答案 2 :(得分:0)
一些解决方案;
如上所述,这样做的正确方法是通过二进制比较。通常这不会像你说的那样“杀死”性能;二进制比较通常是非常快速的操作。
SELECT name
FROM groups
WHERE name = BINARY 'WEB '
然后将'WEB'连接到'WEB'。
除此之外,如果您使用的是解决方案,您可以在前端寻找解决方案;例如使用php附加“%20”代替空格等。更优雅的解决方案是将有效的表名称预先加载到数组中,并在运行查询之前与它们进行比较以获得有效匹配。但是,我认为只需运行BINARY解决方案就可以更好地处理您的处理时间。