MySQL не соответствует ключам varchar, заканчивающимся числом - PullRequest
1 голос
/ 17 августа 2011

Я определил таблицу как

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 Ответ

1 голос
/ 16 ноября 2011

Я думаю, что вы сделали опечатку в обоих запросах. Ваше имя таблицы должно быть mytable вместо идентификатора.

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

Это опечатка? Есть ли в вашей базе данных еще одна таблица, которая называется идентификатором?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...