如何使额外的空格影响我的MySQL查询结果?

时间:2015-02-24 21:28:28

标签: mysql sql whitespace

我正在使用MySQL 5.5.37。如果我在我的数据库上运行以下查询

select count(*) FROM user where user_name = 'admin';

我回到结果“3”。但是,当我执行查询

select count(*) FROM user where user_name = 'admin     ';

,(注意单词“admin”之后的额外空格,我也得到结果“3”。事实上,当我查看记录时,它们与第一个查询的记录相同。但是,有在我的数据库中没有user_name字段等于“admin”的记录。鉴于此时我无法升级我的MySQL数据库,我该怎么做才能确保第二个查询(带有额外的空格)返回正确的结果(即“0”)?

编辑: user_name字段的类型为varchar(50)。

3 个答案:

答案 0 :(得分:1)

我并非100%确定是这种情况,但看起来你的user_name字段是char(n)字段而不是varchar(n)。

这些字段用空格填充以完全匹配字段的长度,而varchars是(我相信)空终止字符串。

两个查询都返回相同的答案,因为它们也用空格填充缺少的字符。

如果希望查询正常工作,请考虑将列的类型更改为varchar。

答案 1 :(得分:0)

你可以尝试使用这篇文章中描述的正则表达式吗? Query for exact match of an string in SQL

答案 2 :(得分:0)

 select count(*) FROM [sb_user] where user_name = 'admin     ';

你可以试试这个