Реклама на сайте Advertise with us

SQL запросы кто разбиратеся нужна помощь

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:



С нами с 19.06.05
Сообщения: 311
Рейтинг: 188

Ссылка на сообщениеДобавлено: 29/09/10 в 21:11       Ответить с цитатойцитата 

имеем массив ссылок в базе вида
http://sometext.com/folder/UNIQUE-ID-HERE
ссылки отличаются только уникальным ID

нужно заменить ссылки в массиве на ссылки вида
http://othertext.com/otherfolder/UNIQUE-ID-HERE?ie=someparam&tag=UNIQUE-ID-HERE

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

возможно ли с помощью SQL запросов решить задачу? ну или другими вариантами

0
 

www.phpdevs.com

С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105


Передовик Master-X (01.09.2005) Передовик Master-X (16.09.2005) Передовик Master-X (01.10.2005) Передовик Master-X (16.08.2006) Передовик Master-X (16.10.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 29/09/10 в 21:25       Ответить с цитатойцитата 

Код:
CONCAT(str1,str2,...)
Returns the string that results from concatenating the arguments. Returns NULL if any argument is NULL. May have one or more arguments. If all arguments are non-binary strings, the result is a non-binary string. If the arguments include any binary strings, the result is a binary string. A numeric argument is converted to its equivalent binary string form.
mysql> SELECT CONCAT('My', 'S', 'QL');
        -> 'MySQL'
mysql> SELECT CONCAT('My', NULL, 'QL');
        -> NULL
mysql> SELECT CONCAT(14.3);
        -> '14.3'

CONCAT_WS(separator,str1,str2,...)
CONCAT_WS() stands for CONCAT With Separator and is a special form of CONCAT(). The first argument is the separator for the rest of the arguments. The separator is added between the strings to be concatenated. The separator can be a string as can the rest of the arguments. If the separator is NULL, the result is NULL. The function skips any NULL values after the separator argument.
mysql> SELECT CONCAT_WS(',','First name','Second name','Last Name');
        -> 'First name,Second name,Last Name'
mysql> SELECT CONCAT_WS(',','First name',NULL,'Last Name');
        -> 'First name,Last Name'


один из двух вариантов

Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.

0
 



С нами с 19.06.05
Сообщения: 311
Рейтинг: 188

Ссылка на сообщениеДобавлено: 29/09/10 в 21:39       Ответить с цитатойцитата 

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

0
 



С нами с 10.12.03
Сообщения: 1615
Рейтинг: 870

Ссылка на сообщениеДобавлено: 29/09/10 в 22:01       Ответить с цитатойцитата 

если айди в поле UID1, то выглядеть будет так
Код:
select CONCAT("http://URL.COM/",UID1,"?ie=someparam&tag=",UID1) as MYLINK from TABLE1 WHERE УСЛОВИЕ;

нету у меня подписи...

0
 



С нами с 19.06.05
Сообщения: 311
Рейтинг: 188

Ссылка на сообщениеДобавлено: 29/09/10 в 22:05       Ответить с цитатойцитата 

весь линк в одном поле в месте с айди, оно не отдельно, поэтому несовсем понял как можно сцепить то что в одном поле

раньше я делал так
UPDATE table SET field = REPLACE(field,"old","new")

но в этом случае таким образом можно заменить только то что в линке до ID

а вот как добавить параметры линка после ID и добавить в конец линка айди ведь он уникальный для каждой ссылки

Последний раз редактировалось: Newestage (29/09/10 в 22:20), всего редактировалось 2 раз(а)

0
 

www.phpdevs.com

С нами с 24.10.02
Сообщения: 16633
Рейтинг: 16105


Передовик Master-X (01.09.2005) Передовик Master-X (16.09.2005) Передовик Master-X (01.10.2005) Передовик Master-X (16.08.2006) Передовик Master-X (16.10.2006) Ветеран трепа Master-X ()
Ссылка на сообщениеДобавлено: 29/09/10 в 22:12       Ответить с цитатойцитата 

Тогда: SUBSTRING(str FROM pos FOR len)
Код:

mysql> SELECT SUBSTRING('foobarbar' FROM 4);
        -> 'barbar'

Пишу на php/mysql/django за вменяемые деньги.
Обращаться в личку.

0
 



С нами с 12.04.10
Сообщения: 45
Рейтинг: 26

Ссылка на сообщениеДобавлено: 29/09/10 в 22:32       Ответить с цитатойцитата 

Код:
UPDATE table SET url2 =  CONCAT("http://othertext.com/otherfolder/", SUBSTRING(url1 FROM 27),"?ie=someparam&tag=", SUBSTRING(url1 FROM 27))
WHERE условие;


27 - позиция символа с которого начинается UNIQUE-ID

0
 



С нами с 19.06.05
Сообщения: 311
Рейтинг: 188

Ссылка на сообщениеДобавлено: 29/09/10 в 23:15       Ответить с цитатойцитата 

а как это будет работать для массива ссылок? ведь url1 каждая со своим уникальным ID

0
 



С нами с 10.12.03
Сообщения: 1615
Рейтинг: 870

Ссылка на сообщениеДобавлено: 29/09/10 в 23:21       Ответить с цитатойцитата 

ну тогда тебе в сторону регулярных выражений нужно смотреть.
и вообще, я бы эту логику вынес в скрипт, а не оставлял на уровне СУБД.

нету у меня подписи...

0
 



С нами с 19.06.05
Сообщения: 311
Рейтинг: 188

Ссылка на сообщениеДобавлено: 29/09/10 в 23:37       Ответить с цитатойцитата 

там еще проблема в том что в поле которое содержит урл еще много всего текст html т.е. uniqueID в каждом случае на разной позиции

0
 



С нами с 06.03.03
Сообщения: 1650
Рейтинг: 1096

Ссылка на сообщениеДобавлено: 30/09/10 в 05:45       Ответить с цитатойцитата 

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

0
 



С нами с 05.04.07
Сообщения: 1661
Рейтинг: 1090


Передовик Master-X (01.04.2011)
Ссылка на сообщениеДобавлено: 30/09/10 в 14:55       Ответить с цитатойцитата 

Если бы данные лежали в нормальном формализированном виде (хотя бы один урл в ячейке) то это была задача для мускула. А найти урл в тексте, потом ещё выполнить замены - проще и быстре на пыхе или питоне

True хостинг

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »