4

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

为什么MySQL我可以查询

SELECT name
  FROM groups
 WHERE name =  'WEB    '

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

4

3 回答 3

3

解决方案是使用BINARY.

SELECT name
  FROM groups
 WHERE name = BINARY 'WEB    '
于 2013-01-05T05:13:33.243 回答
0

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

SELECT name FROM groups WHERE name like 'WEB    '

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

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

于 2013-01-05T05:08:42.977 回答
0

一些解决方案;

如上所述,这样做的正确方法是通过二进制比较。通常,这不会像您所说的那样“杀死”性能;二进制比较通常是非常快速的操作。

SELECT name
FROM groups
WHERE name = BINARY 'WEB   '

然后,这会将“WEB”连接到“WEB”。

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

于 2013-01-05T05:17:16.343 回答