我已经定义了一个类似
的表格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)之外,我的标识符还有足够的空间。 我做错了什么?可能是什么原因或解决方案?
答案 0 :(得分:1)
我认为您在两个查询中都输入了拼写错误。您的表名应该是mytable而不是标识符。
SELECT *
FROM mytable
WHERE identifier = 'USER01-TESTXXY-CAD-10245';
这是一个错字吗? 您的数据库中是否有另一个名为标识符的表?