Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вопрос по REGEXP в MySQL 
:(
    Опции темы
boodi
Дата 20.10.2010, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 20.10.2008

Репутация: нет
Всего: нет



Вопрос по регулярным в MySQL

Нужно выбрать все строки, в которых в поле field встречаются буквы a, b и c\
запрос:
Код

SELECT * FROM table WHERE field REGEXP "[abc]";

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

пробывал пойти от противного:
Код

SELECT * FROM table WHERE field NOT REGEXP "[^abc]";

не вышло....
PM MAIL   Вверх
gta4kv
Дата 20.10.2010, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 4
Всего: 91



Код

SELECT * FROM table WHERE field REGEXP "abc";


Это сообщение отредактировал(а) gta4kv - 20.10.2010, 14:08
PM MAIL   Вверх
boodi
Дата 20.10.2010, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 20.10.2008

Репутация: нет
Всего: нет



мне нужно и bca.
И bcacacb, и haibyc.
Грубо говоря, слова, в которых содержатся все буквы....

а (abc) - это ж слово...

PM MAIL   Вверх
gta4kv
Дата 20.10.2010, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 4
Всего: 91



Код

SELECT * FROM `table` WHERE `field` REGEXP "(a|b|c)" LIMIT 0 , 30


Добавлено через 1 минуту и 4 секунды
тоже не то кажись, юпс smile
PM MAIL   Вверх
boodi
Дата 20.10.2010, 14:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 20.10.2008

Репутация: нет
Всего: нет



Цитата(gta4kv @ 20.10.2010,  12:08)
Код

SELECT * FROM `table` WHERE `field` REGEXP "(a|b|c)" LIMIT 0 , 30


Добавлено @ 14:09
тоже не то кажись, юпс smile

это тоже самое, что [abc]

я уж много чего перепробывал....

кстати
Код

SELECT * FROM table WHERE field NOT REGEXP "[^abc]";

выводит слова состоящие только из этих букв...

Это сообщение отредактировал(а) boodi - 20.10.2010, 14:13
PM MAIL   Вверх
skyboy
Дата 20.10.2010, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 14
Всего: 260



че, только регулярками пользоваться?
Код

field regexp "a" and field regexp "b" and field regexp "c"

но для указанной задачи отлично подходит locate в таком же формате: три условия на каждую букву отдельно плюс "and" между ними.
но задача какая-то мутная.
если на самом деле тебе нужен полнотекстовый поиск(не просто буквы ищешь, а, скажем, слова и предложения), то лучше использовать предназначенные для этого средства.
если у тебя в некоем коде есть символы, которые кодируют определенную характеристику("а" - "синий", "b"  - "квадратный"), то лучше один раз это все распарсить и разложить по раздельным полям.

PM MAIL   Вверх
boodi
Дата 20.10.2010, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 20.10.2008

Репутация: нет
Всего: нет



Цитата(skyboy @ 20.10.2010,  12:45)
че, только регулярками пользоваться?
Код

field regexp "a" and field regexp "b" and field regexp "c"

но для указанной задачи отлично подходит locate в таком же формате: три условия на каждую букву отдельно плюс "and" между ними.
но задача какая-то мутная.
если на самом деле тебе нужен полнотекстовый поиск(не просто буквы ищешь, а, скажем, слова и предложения), то лучше использовать предназначенные для этого средства.
если у тебя в некоем коде есть символы, которые кодируют определенную характеристику("а" - "синий", "b"  - "квадратный"), то лучше один раз это все распарсить и разложить по раздельным полям.

на самом деле искал именно слова по вхождениям букв...
не понимаю почему такое простое решение не впришло в мой ум smile
спасибо....

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




[ Время генерации скрипта: 0.0542 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.