update - Cadena de MySQL reemplazar
select replace mysql (5)
La función de http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_replace debería funcionar para usted.
REPLACE(str,from_str,to_str)
Devuelve la cadena str con todas las apariciones de la cadena from_str reemplazada por la cadena to_str. REPLACE()
realiza una coincidencia que distingue entre mayúsculas y minúsculas al buscar from_str.
Tengo una columna que contiene urls (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
Me gustaría cambiar la palabra "actualizaciones" a "noticias". ¿Es posible hacer esto con un script?
Sí, MySQL tiene una función 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
Tenga en cuenta que es más fácil si lo hace un alias cuando usa SELECT
SELECT REPLACE(string_column, ''search'', ''replace'') as url....
Simplemente puede utilizar la función replace (),
con donde la cláusula-
update tabelName set columnName=REPLACE(columnName,''from'',''to'') where condition;
sin donde la cláusula-
update tabelName set columnName=REPLACE(columnName,''from'',''to'');
Nota: La consulta anterior indica si hay registros de actualización directamente en la tabla, si desea una consulta de selección y los datos no deberían verse afectados en la tabla, luego puede usar la siguiente consulta:
select REPLACE(columnName,''from'',''to'') as updateRecord;
Además de la respuesta de gmaggio si necesita REPLACE
y UPDATE
dinámicamente de acuerdo con otra columna, por ejemplo:
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...
En mi ejemplo, la cadena de articles/news/
se almacena en other_table t2
y no hay necesidad de usar LIKE
en la cláusula WHERE
.
UPDATE your_table
SET your_field = REPLACE(your_field, ''articles/updates/'', ''articles/news/'')
WHERE your_field LIKE ''%articles/updates/%''
Ahora filas que eran como
http://www.example.com/articles/updates/43
estarán
http://www.example.com/articles/news/43