El día de hoy en uno de mis proyectos de una tienda virtual, tenia que hacer el ajuste de un campo en mi base de datos que hacia referencia a las imagenes, pero el detalle era que ya había algunos registros capturados y no quería ir de uno por uno haciendo el ajuste, así que tenía que hacerlo todo de un jalon.
La solución fue la función de MySQL replace(), está me te ayuda a remplazar cierta cadena por otra y lo mejor, puede afectar todos los registros.
Mi base de datos estaba así, lo que necesitaba era quitar esa url y dejar únicamente la parte de assets/images/archivo.jpg
La sentencia SQL que me solucionó fue:
1 2 3 | UPDATE productos SET foto1 = REPLACE(foto1, 'http://unasolucion.com.mx/', '') WHERE foto1 LIKE '%http://unasolucion.com.mx/%' |
En mi caso tengo un valor vacio ” debido a que no necesito sustituir la cadena por otro, más bien quiero que me elimine, por ese motivo lod eje en blanco.
UPDATE “mi tabla” SET “el campo que quiero afectar” = REPLACE(“nuevamente el campo”, “el valor que quiero cambiar”, “el nuevo valor”) WHERE “el campo nuevamente” LIKE ‘%”todos los campos que contengan el valor%’
Aca otro ejemplo
1 2 3 | UPDATE your_table SET your_field = REPLACE(your_field, 'articles/updates/', 'articles/news/') WHERE your_field LIKE '%articles/updates/%' |
Al final quedáron mis registros asi:
De esa forma hacemos el update de la BD y evitas estar haciendolo 1 por 1, ya tu puedes ajustar la sentencia a tus necesidades, espero les sirva.