Modificar un patrón en columna SQL – Postgresql

postgresql

Se presenta el siguiente escenario, tenemos una tabla donde hospedamos rutas a archivos, esta información se guarda dentro de la tabla de la siguiente manera:

inmsweet_sistema=# SELECT foto1 from propiedades;
                        foto1
———————————————
../fotos/2san+miguel.jpg
../fotos/tumblr_mnkbly4H4i1qbltjyo1_500.jpg
../fotos/tumblr_mmkqzbJyGr1qijolto1_500.jpg
../fotos/tumblr_mnkbly4H4i1qbltjyo1_500.jpg
../fotos/1.jpg
(5 rows)

inmsweet_sistema=#

Esto se ve bien pero que pasara si por cualquier motivo el directorio “fotos” no se encontrara un directorio atrás de la rutina que extrae esta información , es decir por algún motivo tenemos que mover el directorio, las imágenes no se van a desplegar por que la ruta almacenada es incorrecta, no podemos decirle al cliente que vuelva a introducir la información por que puede que sean muchos registros y existe una forma sencilla vía SQL de hacer un FIND and REPLACE del patrón. Primero podemos llamar un SELECT para ver como va quedar la operación de la siguiente forma:

inmsweet_sistema=# SELECT REPLACE(foto1, ‘../’, ”) from propiedades;
                        replace
——————————————
fotos/2san+miguel.jpg
fotos/tumblr_mnkbly4H4i1qbltjyo1_500.jpg
fotos/tumblr_mmkqzbJyGr1qijolto1_500.jpg
fotos/tumblr_mnkbly4H4i1qbltjyo1_500.jpg
fotos/1.jpg
(5 rows)

Este es el resultado que obtendremos al ejecutar el UPDATE en la columna procedamos, con la ejecución del mismo:

inmsweet_sistema=# UPDATE propiedades set foto1=REPLACE(foto1, ‘../’, ”);

UPDATE 5

inmsweet_sistema=# SELECT foto1 from propiedades;
                          foto1
——————————————
fotos/2san+miguel.jpg
fotos/tumblr_mnkbly4H4i1qbltjyo1_500.jpg
fotos/tumblr_mmkqzbJyGr1qijolto1_500.jpg
fotos/tumblr_mnkbly4H4i1qbltjyo1_500.jpg
fotos/1.jpg
(5 rows)

De esta forma no hay de que preocuparse puede actualizar la ruta almacenada y colocar el directorio de imágenes en la raíz del sistema web. Eso es todo nos vemos. créditos al Ing Servio Velasco.

Leave a Comment