![]() |
|
Модераторы: skyboy |
![]()
|
|
| mikgigs |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 26.10.2008 Репутация: нет Всего: нет |
Здравствуйте Всем,
помогите пожалуйста в может бъть банальная проблемма но все таки уже почти целъй день думаю как сделать елегантное решение для въделения слов из текстовъх полей из таблице. Так вот: есть колонка где, записано текст разной величине в полях. Слова разделенъ пробелом ' '; Есть ли елегантная возможность въделить слова( и потом конечно найти уникальнъе таких) из етих полей Изпользуя только Мysql. Сейчас я изпользую супер громоздкий метод, где делаю следующие: нахожу все первъе слова в табличную колноки, потом ставлю в времевой таблице (в сличае Sana) и потом стираю ети первъе слова пока не вернет пустой селект: и так далеее... Проблема в том, что у меня на серваке старая версия mysql-a, и изпользование сохраненнъх процедур только вариант(тоже подойдет если только с етим можно сделать) Подскажите какой нибудь елегантнъх въход если встречали где-то. Это сообщение отредактировал(а) mikgigs - 28.10.2008, 23:43 |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 41 Всего: 260 |
mikgigs, насолько мне известно, функциии не могут возвращать таблицу(я так понимаю, тебе как раз надо на основании значения поля-строки сформировать таблицу). кроме того, функции типа "вытянуть n-ое слово" в MySQL отсутствует(надо писать UDF). потому предложение не морочиться, а перенести заботу о разделении на клиентский язык программирования.
P.S. В режиме транслита для буквы "ы" надо использовать кнопкy "Y". |
|||
|
||||
| mikgigs |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 26.10.2008 Репутация: нет Всего: нет |
Я не пишу на транслите, а просто болгар...
|
|||
|
||||
| mikgigs |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 26.10.2008 Репутация: нет Всего: нет |
Skyboy ето все правда, функция поле не может возвратить лист.., придется все таки писать функцию на сервернъй скрипт.
Спасибо за хороший ответ |
|||
|
||||
| mikgigs |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 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 |
|||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | MySQL | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |