我有一个MySQL 5.6(在Windows 7操作系统上运行)数据库。在这个数据库中,我有一个简单的表(Bolle),它有一个名为bol_gruppo的VARCHAR(255)字段。
此数据库通过MFC应用程序填充,该应用程序通过ODBC 32连接到DBMS。现在,用户插入了一个组行,其中bol_gruppo似乎是'prova'。我说“似乎”因为如果我执行LIKE查询:
SELECT * FROM bolle WHERE bol_gruppo LIKE 'prova';
不返回任何行,而:
SELECT * FROM bolle WHERE bol_gruppo = 'prova';
给出正确的结果。 查询没有过滤器显示有bol_gruppo设置为'prova'的行。 问题出在哪儿?如何查看bol_gruppo中真正存储的内容?
答案 0 :(得分:2)
问题可能是'prova'在您的数据中有一个尾随的空格,例如'prova'
如果有空格,LIKE将不返回任何结果,但是=将返回结果。
bol_gruppo ='prova'
这将在
上返回结果.... WHERE bol_gruppo = 'prova'
“=”将对待'prova'与'prova'相同
但是
.... WHERE bol_gruppo LIKE 'prova'
“LIKE”会对待'prova'与'prova'不一样
它将检查确切的字符串,除非使用/声明了通配符,因此这将返回0行
特别是,尾随空格很重要,对于使用=运算符执行的CHAR或VARCHAR比较不是这样:
http://dev.mysql.com/doc/refman/5.6/en/string-comparison-functions.html