SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 19.02.2009 18:16:56

ley
Участник
Зарегистрирован: 19.02.2009
Сообщений: 6

Регулярное выражение в запросе

Есть таблица товаров с одним текстовым полем (названия на русском языке).

Задача - отобрать записи, по подстроке поиска, но с условием, что начало подстроки - будет соответствовать началу слова в названии товара.
Пример:
при поиске: "смягч" чтобы выдавалось - Крем смягчающий
а при поиске: "мягч" выдавалось - нет

Пытался сделать след. образом:

1. SELECT name FROM t WHERE name REGEXP '[^[:alpa:]]?$query'
2. SELECT name FROM t WHERE name REGEXP '[^a-zа-я]?$query'

но эти варианты получились тоже самое что и LIKE '%$query%'

Неактивен

 

#2 19.02.2009 18:29:43

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Регулярное выражение в запросе

Регулярные выражения совпадают со строкой не обязательно в начале. Например,
под регулярное выражение /a/ подходят строки «арбуз» и «машина».

С другой стороны, под /^a/ «машина» уже не подойдет. Внимательнее пишите выражения.

Неактивен

 

#3 19.02.2009 18:34:13

ley
Участник
Зарегистрирован: 19.02.2009
Сообщений: 6

Re: Регулярное выражение в запросе

paulus,

мне нужно чтобы нашлись все записи, где с подстроки поиска начинается одно из слов в названии товара. То есть я пытался записи, где входит подстрока, и перед ней нет алфавитных символов.
Не очень понял ваш ответ

Неактивен

 

#4 19.02.2009 18:48:51

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6756

Re: Регулярное выражение в запросе

Тогда Вам нужно выбирать с учетом границы слова:

... WHERE name REGEXP '[[:<:]]$query';

Подробнее вот тут: http://dev.mysql.com/doc/refman/5.0/en/regexp.html

Неактивен

 

#5 19.02.2009 20:12:50

ley
Участник
Зарегистрирован: 19.02.2009
Сообщений: 6

Re: Регулярное выражение в запросе

Да, большое спасибо!

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson