MySQL WHERE子句自动修剪尾部空白



可能重复:
如何对单个空间进行字符串比较

为什么在MySQL中我可以查询

SELECT name
  FROM groups
 WHERE name =  'WEB    '

注意到所有尾随的空白。我希望这不会返回任何行,因为组WEB存在,但不存在带有尾部空白的WEB。如何强制MySQL精确查询,而不自动修剪WHERE子句中的尾部空白?

解决方案是使用BINARY

SELECT name
  FROM groups
 WHERE name = BINARY 'WEB    '

一些解决方案;

如上所述,正确的方法是通过二进制比较。通常情况下,这不会像你所说的那样"扼杀"性能;二进制比较通常是非常快速的操作。

SELECT name
FROM groups
WHERE name = BINARY 'WEB   '

这将把"WEB"连接到"WEB"。

除此之外,如果你正在使用前端解决方案,你可以在前端寻找解决方案;例如使用php在空格处附加"%20"等。一个更优雅的解决方案是将有效的表名预加载到数组中,并在运行查询之前与它们进行比较以获得有效的匹配。然而,我认为只运行BINARY解决方案对您的处理时间会更好。

您需要使用LIKE运算符而不是'='symbol

SELECT name FROM groups WHERE name like 'WEB    '

另一个解决方案是您也可以使用BINARY关键字。

二进制函数:-这是MySQL提供的逐字节比较列的功能,可用于执行区分大小写的搜索。

最新更新