Здравствуйте, товарищи. Ситуация такая. Хочу сделать поиск ко каталогу продукции. К примеру человек ищет деталь с названием "АБВГД-73В-15-А". Но в базе она называется "АБВГД-73-В 15А". Так вот, деталь одна и та же, но если искать обычным LIKE%...% то ничего не найдется. Я решил выйти из положения следующим образом, но потом подумал реально ли это) Допустим А это ячейка строки в базе, Б - поисковый запрос. И в поиске (SQL-запросе) я буду сравнивать не А и Б, а: НЕКАЯ_ФУНКЦИЯ_УБИРАЮЩАЯ_ПРОБЕЛЫ_И_ДЕФИСЫ(А) и НЕКАЯ_ФУНКЦИЯ_УБИРАЮЩАЯ_ПРОБЕЛЫ_И_ДЕФИСЫ(Б) Тогда: "АБВГД-73В-15-А" и "АБВГД-73-В 15А" станут одним и тем же. Скажите, реально ли это сделать, и если да, то как. Заранее спасибо.
а там только дефисы? PS это запчасти для чего то? --- Добавлено --- короче заведи в БД еще один столбец куда вписывай тоже название только без дефисов и пробелов и делай по нему поиск.
Это электронные компоненты. Вот типовое название: РБН1-26-18Ш1-В Но его могут назвать: РБН1-26-18Ш1В РБН1 26 18Ш1 В РБН1-2618-Ш1В РБН-1-26-18-Ш-1-В И так далее, вариантов уйма. И как правило, пишут как попало.
Боюсь, что у вас остаётся не так много выбора. Делайте два REPLACE для поля с удалением пробелов и дефисов. Пример Код (Text): SELECT * FROM `tbl` WHERE REPLACE(REPLACE(`model`, '-', ''), ' ', '') LIKE '%РБН12618Ш1В%'; Оффтоп для модераторов. Подсветку бы для мускула...