This question already has answers here:
Trailing whitespace in varchar needs to be considered in comparison

(4个答案)


已关闭8年。




我有一个非常奇怪的行为,无法在我的SQL DB中理解(我正在使用MySQL 5.5.8):

我在一张 table 上有一个varchar(10),名字是:乔。

如果运行这样的sql:
SELECT ID FROM `names` WHERE `name` = 'joe '

我得到一个结果:joe,但是这是错误的,因为在表中我没有任何“joe”(末尾有空格。我只有“joe”(无空格)

但是,如果我执行:
SELECT ID FROM `names` WHERE `name` LIKE 'joe '

我得到了我的期望:什么都没有。
据我所知,=应该是“精确”匹配,而like则更宽松,无法与子字符串和%一起使用。

我想念什么?

最佳答案

对于CHAR或使用VARCHAR进行的=比较,尾随空格并不重要。参见string comparison functions:

09-30 12:54
查看更多