поиск по артиклу

mailmoney

Новичок
Здравствуйте.
Столкнулся с проблемой:
Есть артиклы товаров шаблоны такие:
XXXXX-XXXXX-XX
XXXXX-XXXXX
XXXXXXXXXX
XXXXX-XXXX
XXXXXXXX
XXXXX-XXXXX-X
XXXXX-XXX
Делаю поиск по товарам. Как правильно составить запрос к БД и предоперации на строкой поиска, чтобы при полном совпадении - не было дополнительных вариантов.
Например ищем "12345-12345" в бд есть 1234512345, и 12345-55879, второй вариант не должен выводится. Сейчас сделал MATCH AGAINSTIN BOOLEAN MODE - не правильно работает. Помогите.
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
Убрать нафик знак "-" и искать по четкому совпадению не? MATCH как бы не для таких вещей создан.
 

mailmoney

Новичок
Подскажите как.
Мои идеи только такие - ищет 1234512345
$string1=1234512345;
преобразовать в $string2=12345%12345
искать select ... where pole LIKE $string2 or pole=$string1.

Идея из запроса поля убрать все символы и пробелы - не знаю как. Чтобы select nosymbol(items)
тогда думаю можно так сделать.
 

mailmoney

Новичок
Это я уже поизучал, но что то не работает. Я сегодня заканчиваю. Опять код получается не умный, но что пришло в голову и работает.
Удаляю из запроса поиска пробелы и тире. Потом подчитываю длину строки - и расставляю нужный формат 12345-12345
 

Mr_Max

Первый класс. Зимние каникулы ^_^
Команда форума
Это я уже поизучал, но что то не работает.
Просто замечательно.
Вилка в розетку вставлена?
Электичество есть?

К чему это я? Ах, ну да, как-то нужно локаллизировать проблему.
Удаляю из запроса поиска пробелы и тире. Потом подчитываю длину строки - и расставляю нужный формат 12345-12345
Просто замечательно.
А если там будет 123-4512345?

Я предлагаю не искать себе проблем ничего не расставлять, а тупо убрать символы из обоих мест.
 

mailmoney

Новичок
удаляет - пробелы. получаем 1234512345. Потом преобразуем под формат - 12345-12345
все что может быть в артикулах выше написано.
Да правда подскажите тогда как верно составить запрос

Сейчас так: select title from table where title LIKE '%".$text."%';
replace - нужно удалить все пробелы и тире из title. ну и сравнить с $text (он уже идет без пробелов и тире).

Я не нашел как сразу дважды сделать замену ну что то вроде
SELECT REPLACE(REPLACE(title, ' ', ''), title, '-', '')
и продолжения нигде не встретил про where и т.д.
 

tz-lom

Продвинутый новичок
SELECT REPLACE(REPLACE(title, ' ', ''), title, '-', '')
Напиши ПРАВИЛЬНО и будет тебе счастье
и не пихай это в селект - обнови всю таблицу на формат без мусора и делай простые выборки,а так ты отрубаешь возможность использовать индексы
 

kotpl_

Новичок
tz-lom - здесь наверное такой поиск потому что это вводят люди и по условию они могут вводить не сначала, а например конец артикула или средину.
mailmoney - а чем не устраивает like '%фраза%' ? Это конечно же полное сканирование со всеми вытекающими последствиями, но все зависит и от объема данных сейчас и в будущем...
 
Сверху