MySQL与以数字结尾的varchar键不匹配

时间:2011-08-16 20:06:11

标签: mysql sql indexing

我已经定义了一个类似

的表格
CREATE TABLE `mytable` (
  `identifier` varchar(45) NOT NULL,
  `f1` char(1) NOT NULL,
  KEY `identifier` (`identifier`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

然后将主键和索引添加为

ALTER TABLE `mytable` ADD PRIMARY KEY ( `identifier` ) 
ALTER TABLE `mytable` ADD INDEX ( `identifier` ) 

在标识符字段中,我的表格中填充了类似(约800,000条记录)

的值
USER01-TESTXXY-CAD-10172
USER01-TESTXXY-CAD-1020
USER01-TESTXXY-CAD-10245
USER02-TEST-003-SUBA
USER02-TEST-002-SUBB

我发现标识符以数字结尾的查询不匹配:

SELECT *
FROM identifier
WHERE identifier = 'USER01-TESTXXY-CAD-10245';

但是匹配以字母结尾的标识符的查询已成功匹配

SELECT *
FROM identifier
WHERE identifier = 'USER02-TEST-003-SUBA';

我的查询是准确的,我不需要与LIKE比较,因为我的用户为我提供了确切的字符串。除了varchar(45)之外,我的标识符还有足够的空间。 我做错了什么?可能是什么原因或解决方案?

1 个答案:

答案 0 :(得分:1)

我认为您在两个查询中都输入了拼写错误。您的表名应该是mytable而不是标识符。

SELECT *
FROM mytable
WHERE identifier = 'USER01-TESTXXY-CAD-10245';

这是一个错字吗? 您的数据库中是否有另一个名为标识符的表?