Задавайте вопросы, мы ответим
Вы не зашли.
Есть таблица товаров с одним текстовым полем (названия на русском языке).
Задача - отобрать записи, по подстроке поиска, но с условием, что начало подстроки - будет соответствовать началу слова в названии товара.
Пример:
при поиске: "смягч" чтобы выдавалось - Крем смягчающий
а при поиске: "мягч" выдавалось - нет
Пытался сделать след. образом:
1. SELECT name FROM t WHERE name REGEXP '[^[:alpa:]]?$query'
2. SELECT name FROM t WHERE name REGEXP '[^a-zа-я]?$query'
но эти варианты получились тоже самое что и LIKE '%$query%'
Неактивен
Регулярные выражения совпадают со строкой не обязательно в начале. Например,
под регулярное выражение /a/ подходят строки «арбуз» и «машина».
С другой стороны, под /^a/ «машина» уже не подойдет. Внимательнее пишите выражения.
Неактивен
paulus,
мне нужно чтобы нашлись все записи, где с подстроки поиска начинается одно из слов в названии товара. То есть я пытался записи, где входит подстрока, и перед ней нет алфавитных символов.
Не очень понял ваш ответ
Неактивен
Тогда Вам нужно выбирать с учетом границы слова:
... WHERE name REGEXP '[[:<:]]$query';
Подробнее вот тут: http://dev.mysql.com/doc/refman/5.0/en/regexp.html
Неактивен
Да, большое спасибо!
Неактивен