Форум сетевых администраторов
Показаны 11 сообщений на этой странице

Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- MySQL (http://netadmin.ws/forum/forumdisplay.php?forumid=40)
-- Затрудняюсь в создании Sql-запроса (http://netadmin.ws/forum/showthread.php?threadid=10984)


Помещено Jovani 27-08-2005 в 23:12:

Затрудняюсь в создании Sql-запроса

Есть таблица с полями file и url.
Необходимо, изменить записи в такой таблице.
Изначально:

| - file - | - url -
|--------|----------
|123.zip | -----
|222.rar | -----
|aaa.zip | -----



Нужно получить:

| - file - | - url -
|-------|----------
|-------| http://site.com/123.zip
|-------| http://site.com/222.rar
|-------| http://site.com/aaa.zip


Не силен в MySQL, можно ли это сделать запросом?


Помещено RaZEr 28-08-2005 в 01:59:

CONCAT()

__________________
The time was broken ...


Помещено Jovani 28-08-2005 в 16:57:

Спасибо!

Действительно, все оказалось просто:

code:

UPDATE table
SET url=CONCAT('http://site.com/', file);


Помещено Jovani 21-09-2005 в 04:25:

Еще вопрос, из той-же серии
Нужно перезаписать в базе, текстовом поле(post_text), часть текста на другой.

Нечто вроде:

code:

UPDATE table SET post_text = REPLACE(post_text, '[size=11:723152872a]text[/size:723152872a]', 'text2');



То есть, [size=11:723152872a]text[/size:723152872a] -> text2
Причем, 723152872a - это идетнтификатор пользователя, он может быть абсолютно любой.
Пытался применить REGEXP и preg_match() - не получилось.
Может кто даст пример?


Помещено RaZEr 21-09-2005 в 15:14:

quote:
он может быть абсолютно любой
Что ты имеешь ввиду? То, что он берётся из другого поля этого же запроса или что?

__________________
The time was broken ...


Помещено Jovani 21-09-2005 в 19:13:

Нет, это все в том-же поле (мессага пользователя)
Другими словами, мне нужно в SQL-запросе, применить аналог PHP:
eregi_replace("[\[]size=11:[a-z0-9]{1,10}[\[]text[\[]size=11:[a-z0-9]{1,10}[\[]", "text2", $message)
Пробовал запросом, и скрипт ваять, но не получилось


Помещено RaZEr 21-09-2005 в 19:24:

Т.к. действие это (я надеюсь) неповседневное, то используя REGEXP выбери строки в которых содержится нужное сочетание, а затем уже в самом PHP-скрипте замени.

__________________
The time was broken ...


Помещено Jovani 21-09-2005 в 21:31:

Буду пробовать ...

С другой стороны, пока понятно, почему не работает запрос типа такого:
UPDATE table SET post_text =replace(post_text, post_text REGEXP 'text1', 'text2');

Вернее работает, но результат такой:
text1 -> texttext2

А нужно:
text1 -> text2

Я MySQL только недавно начал осваивать, так что сильно не ругайте, если что не так спрашиваю ...


Помещено RaZEr 21-09-2005 в 21:38:

Вообще REGEXP это ф-ия сравнения. Т.е. для выборки или замены чего-либо она непригодна.

__________________
The time was broken ...


Помещено Jovani 22-09-2005 в 00:21:

Спасибо, теперь вьехал.
Ð_ыл не в ту сторону из-за сввоей невнимательности прочтения что возвращает эта функция ...


Помещено Jovani 24-09-2005 в 08:02:

Итак, то, что родилось, приатачил.
Скрипт позволяет производить замену текста в постах движка phpBB, с использованием регулярных выражений.
Пока, тупо перебираются все посты и производится замена ...
При желании, может быть переделан для других целей.


Формат времени GMT. Текущее время 12:59.
Показаны 11 сообщений на этой странице

Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.