MySQL WHERE子句自动修剪尾随空格

时间:2013-01-05 05:03:29

标签: mysql whitespace

  

可能重复:
  How to string-compare for a single space

为什么MySQL可以查询

SELECT name
  FROM groups
 WHERE name =  'WEB    '

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

3 个答案:

答案 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解决方案就可以更好地处理您的处理时间。