可能重复:
如何对单个空格进行字符串比较
为什么MySQL
我可以查询
SELECT name
FROM groups
WHERE name = 'WEB '
注意到所有尾随空格。我希望这不会返回任何行,因为该组WEB
存在但没有WEB
尾随空格。如何强制 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 解决方案对于您的处理时间会好得多。