Recientemente debido a un problemilla en la configuracion de artio un modulo que genera url amigables me he encontrado con mas de 4000 articulos mal creados donde aparece secciones que no corresponden etc etc. por ejemplo tenemos un articulo con la siguiente url amigable
articulos/microsoft/windows/office/reinstalar-office.
lo que he pretendido es que la url sea mas corta y algo mas simple tal como podria ser
windows/office/reinstalar-office
Bien mi solucion rapida y efectiva por supuesto 🙂 ha sido lanzar una select sobe la bd que me remplaze todo automaticamente. Para ello lo primero he usado el comando LOCATE.
Este comando nos dara el numero de la posicion donde se encuntra la palabra en nuestro caso windows sobre el campo sefurl
locate(texto,campo)
select locate(‘windows’,sefurl) from jos_sefurls
Bien una vez tenemos la posicion lo que hacemos es remplazar con el comando substring este comando extrae la cadena de texto a partir de una posicion.
En mi caso cojo el campo sefurl y a partir del numero obtenido por locate cojo la parte de la derecha.
SELECT substring(sefurl,locate(‘windows’,sefurl)),sefurl,id FROM jos_sefurls
bueno esto nos mostrara como se queda ahora quiero remplazar.
update jos_sefurls set sefurl = substring(sefurl,locate(‘windows’,sefurl)) where ….
Al final le podemos establecer un where para hacer un poco mas fina la sustitucion.