SQL: найти и заменить на SQL? - PullRequest
1 голос
/ 08 июля 2010

У меня есть база данных MySQL InnoDB.

У меня есть столбец в таблице article, который называется url, который необходимо обновить.

Хранится в article.url =

/blog/2010/article-name
/blog/1998/the-article-name
/blog/...

Мне нужно изменить /blog/ на /news/. (Например, теперь article.url = '/news/...')

Какой SQL необходим для замены "/ blog /" на "/ news /" в столбце article.url ?

Ответы [ 3 ]

4 голосов
/ 08 июля 2010
update url
set article = replace(article, '/blog/', '/news/')
where article like '/blog/%'
1 голос
/ 08 июля 2010

Если каждый URL начинается с "/ blog /" и вы не хотите ничего менять, кроме префикса, тогда вы можете просто использовать substring () и concat () вместо replace ():

update article
set url = concat('/news/',substring(url,7))
where url like '/blog/%';
0 голосов
/ 01 февраля 2011

Я недавно хотел заменить строку в MySQL на лету, но поле могло содержать 2 элемента.Поэтому я обернул REPLACE() в REPLACE(), например:

REPLACE(REPLACE(field_name, “what we are looking for”, “replace first instance”), 
       “something else we are looking for”, “replace second instance”)

. Этот синтаксис я использовал для определения логического значения:

REPLACE(REPLACE(field, 1, “Yes”), 0, “No”)

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...