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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Запрос с LIKE и извлечение 
V
    Опции темы
Serebrus
Дата 14.3.2009, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 333
Регистрация: 22.5.2007
Где: Ташкент

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



Привет всем.

Допустим что имеем несколько строк:

1. новый предмет
2. в универмаге продоется все
3. я поступил в магистратуру

и т.д.

Если мы зададим запрос
Код

...where `str` like '%маг%'

то, будем иметь строки:
в универмаге продоется все
я поступил в магистратуру

Как можно извлеч из строки только то слово, которое включает в себе заданный отрывок т.е. "маг"?
1. универмаге
2. магистратуру
PM MAIL   Вверх
skyboy
Дата 14.3.2009, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



никак. в mysql "из коробки" нет ни аналога preg_replace, ни preg_match.
потому либо искать сторонние UDF для mysql, а потом подключать/просить хостера подключить(маловероятно, что пойдут навстречу).
либо же все же реализовать "вырезку" средствами клиентского языка(PHP или что там у тебя)
PM MAIL   Вверх
Serebrus
Дата 16.3.2009, 07:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 333
Регистрация: 22.5.2007
Где: Ташкент

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



skyboy, что скажете на такой подход...

1. Задаем запрос как обычно (...where `str` like '%маг%')
2. с помощью explode разбиваем результативные строки в массив
3. с помощью substr_count, в цикле проверяем на наличие заданного отрывка в элементе массива
4. и если substr_count>0 то, добавляем этот элемент в список.
PM MAIL   Вверх
ksnk
Дата 16.3.2009, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



skyboy,  REGEXP - это стороннее UDF ? 


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
skyboy
Дата 16.3.2009, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



ksnk, regexp не позволяет вычленить совпадающую часть(в РНР- preg_match), ни заменить(preg_replace). только возвращает true/false.
Как тут при помощи оператора REGEXP выдернуть полностью слово?

Добавлено через 3 минуты и 59 секунд
lib_mysqludf_preg - вот что я понимаю под сторонней udf, реализующей поиск и замену по регуляркам.
PM MAIL   Вверх
Serebrus
Дата 16.3.2009, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 333
Регистрация: 22.5.2007
Где: Ташкент

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



skyboy, 
Цитата(Serebrus @  16.3.2009,  07:45 Найти цитируемый пост)
1. Задаем запрос как обычно (...where `str` like '%маг%')2. с помощью explode разбиваем результативные строки в массив3. с помощью substr_count, в цикле проверяем на наличие заданного отрывка в элементе массива4. и если substr_count>0 то, добавляем этот элемент в список.


сработала.

PM MAIL   Вверх
ksnk
Дата 16.3.2009, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

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



skyboy, opps! недочитал вопрос...  smile 

Serebrus, Еще решение - можно побить строки на слова. Работа одноразовая, так что можно и вручную... на PHP. Получится табличка [ID,WORD], где ID - неуникальный индекс из оригинальной таблицы, WORD - слово. В ней уже можно и поискать слова like'ом.


--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

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


 




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


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

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