Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как Въделить все слова из колонки текстовъх фраз? Обработка стрингов, Full text search 
V
    Опции темы
mikgigs
Дата 27.10.2008, 00:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте Всем, 
помогите пожалуйста в может бъть банальная проблемма но все таки уже почти целъй день думаю как сделать елегантное решение для въделения слов из текстовъх полей из таблице.

Так вот: есть колонка где, записано текст разной величине в полях. Слова разделенъ пробелом ' ';
Есть ли елегантная возможность въделить слова( и потом конечно найти уникальнъе таких)  из етих полей Изпользуя только Мysql.


Сейчас я изпользую супер громоздкий метод, где делаю следующие: нахожу все первъе слова в табличную колноки, потом ставлю в времевой таблице (в сличае Sana) и потом стираю ети первъе слова пока не вернет пустой селект:
и так далеее...
Проблема в том, что у меня на серваке старая версия mysql-a, и изпользование сохраненнъх процедур только вариант(тоже подойдет если только с етим можно сделать)
Подскажите какой нибудь елегантнъх въход если встречали где-то.


Это сообщение отредактировал(а) mikgigs - 28.10.2008, 23:43
PM MAIL   Вверх
skyboy
Дата 27.10.2008, 01:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



mikgigs, насолько мне известно, функциии не могут возвращать таблицу(я так понимаю, тебе как раз надо на основании значения поля-строки сформировать таблицу). кроме того, функции типа "вытянуть n-ое слово" в MySQL отсутствует(надо писать UDF). потому предложение не морочиться, а перенести заботу о разделении на клиентский язык программирования.
P.S. В режиме транслита для буквы "ы" надо использовать кнопкy "Y". 
PM MAIL   Вверх
mikgigs
Дата 27.10.2008, 01:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я не пишу на транслите, а просто болгар...
PM MAIL   Вверх
mikgigs
Дата 27.10.2008, 08:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Skyboy ето все правда, функция поле не может возвратить лист.., придется все таки писать функцию на сервернъй скрипт.
Спасибо за хороший ответ
PM MAIL   Вверх
mikgigs
Дата 27.10.2008, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Все таки публикую мой конечнъй вариант в псевдокоде, может кому то придется в пользе и сделает получше.
К сожелению без процедур не обошолся:

CREATE PROCEDURE ExtractWords()
BEGIN
DECLARE v1 INT Default 10; 

 INSERT INTO SomeTextTempTable (Text)
            SELECT  Text 
                              FROM TextTable;

WHILE v1>0 DO

 INSERT IGNORE INTO  TableForWords (Word)
            SELECT  LOWER(
                                       REPLACE(REPLACE(REPLACE(REPLACE(
                                            LEFT(Text,
                                               IF(POSITION(' ' IN Text)=0,
                                               5000, POSITION(' ' IN Text)
                                                    )
                                                   ),
                                                                                                         '.',''), ',' ,''), '!' , ''), '?', '')
                                     )
                              FROM SomeTextTempTable WHERE Text > '';

UPDATE SomeTextTempTable SET Text =
       TRIM(SUBSTR(Text, POSITION(' ' IN Text))) WHERE Text > '';

    Select COUNT(*) INTO v1 FROM MikSomeTextTempTable WHERE Text > '';


END WHILE;
END 

Это сообщение отредактировал(а) mikgigs - 28.10.2008, 09:17
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




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


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

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