@stockerp

Как сравнить выбранные записи по начальным символам?

Имеется таблица вида:
CREATE TABLE IF NOT EXISTS `u` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `PERSCODE` varchar(15) DEFAULT NULL,
  `CODEM` varchar(5) DEFAULT NULL,
  `CODEU` varchar(15) DEFAULT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=14157 ;

В столбце CODEM хранятся записи вида: A123, A124, B567 и т.д.

Для выборки записей с одинаковыми значениями PERSCODE и CODEM использую запрос:
SELECT `u`.* FROM `u` 
LEFT JOIN ( SELECT `PERSCODE`, `CODEM` FROM `u` GROUP BY `PERSCODE`, `CODEM` HAVING COUNT(*) > 1 ) AS `utemp` 
ON ( `utemp`.`PERSCODE` = `u`.`PERSCODE` AND `utemp`.`CODEM` = `u`.`CODEM` ) 
WHERE `utemp`.`PERSCODE` IS NOT NULL ORDER BY `u`.`PERSCODE`


Можно ли как-то средствами MySQL провести сравнение данных поля CODEM не на полное соответствие, а на совпадение первых 3 символов, например, чтобы А010 = А012?
Функция STRCMP() в MySQL сравнивает строки полностью. Можно ли как в функции strcmp() PHP задать количество проверяемых символов?
  • Вопрос задан
  • 118 просмотров
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
SUBSTRING(`utemp`.`CODEM`, 1, 3) = SUBSTRING(`u`.`CODEM`, 1, 3)

Только индексы использоваться не получится
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы