Строки в MySQL заменить
У меня есть столбец, содержащий url (id, url):
http://www.example.com/articles/updates/43
http://www.example.com/articles/updates/866
http://www.example.com/articles/updates/323
http://www.example.com/articles/updates/seo-url
http://www.example.com/articles/updates/4?something=test
Я хотел бы изменить слово "обновления", "новости". Возможно ли это сделать с помощью скрипта?
5 ответов
UPDATE your_table
SET your_field = REPLACE(your_field, 'articles/updates/', 'articles/news/')
WHERE your_field LIKE '%articles/updates/%'
Теперь строки, которые были как
http://www.example.com/articles/updates/43
будет
http://www.example.com/articles/news/43
Да, MySQL имеет функцию REPLACE ():
mysql> SELECT REPLACE('www.mysql.com', 'w', 'Ww');
-> 'WwWwWw.mysql.com'
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_replace
обратите внимание, что это проще, если вы сделаете это псевдоним при использовании SELECT
SELECT REPLACE(string_column, 'search', 'replace') as url....
на заменить функция должна работать для вас.
REPLACE(str,from_str,to_str)
возвращает строку str со всеми вхождениями строки from_str, замененной строкой to_str. REPLACE()
выполняет поиск с учетом регистра при поиске from_str.
вы можете просто использовать функцию replace (),
С, где п.-
update tabelName set columnName=REPLACE(columnName,'from','to') where condition;
без предложения where-
update tabelName set columnName=REPLACE(columnName,'from','to');
Примечание: вышеуказанный запрос если для записей обновления непосредственно в таблице, если вы хотите на select query и данные не должны быть затронуты в таблице, то можно использовать следующий запрос -
select REPLACE(columnName,'from','to') as updateRecord;
в дополнение к ответу gmaggio если вам нужно динамически REPLACE
и UPDATE
в соответствии с другим столбцом вы можете сделать, например:
UPDATE your_table t1
INNER JOIN other_table t2
ON t1.field_id = t2.field_id
SET t1.your_field = IF(LOCATE('articles/updates/', t1.your_field) > 0,
REPLACE(t1.your_field, 'articles/updates/', t2.new_folder), t1.your_field)
WHERE...
в моем примере строка articles/news/
хранящийся в other_table t2
и нет необходимости использовать LIKE
на WHERE
предложения.