En este post te mostraré cómo usar la función replace
de PostgreSQL, misma que funciona para remplazar parte de un texto por otro, muy útil para cuando queremos modificar parte del texto de una columna en una consulta.
Función replace en PostgreSQL
La función replace toma 3 argumentos que son, en orden:
- El texto sobre el que se va a trabajar
- La búsqueda
- El remplazo
Esta función puede ser usada para actualizar una tabla, por ejemplo, algo así:
update tabla set columna = replace(columna, búsqueda, replace);
Veamos con un ejemplo.
Ejemplo para remplazar texto en PostgreSQL
Tengo una tabla con fechas como cadena, pero las fechas tienen la letra T
para separar la fecha de la hora. Así:
select fecha_terminacion from bultos_de_empleados;
fecha_terminacion
---------------------
2020-03-05T22:37:26
2020-03-09T23:33:48
2020-03-09T23:33:52
2020-03-11T00:08:34
2020-03-13T13:20:20
2020-03-13T13:23:53
2020-03-05T22:30:12
2020-03-05T22:30:15
2020-03-05T22:30:17
2020-03-05T22:30:19
2020-03-05T22:30:21
(11 rows)
Lo que quiero remplazar es esa T
por un espacio en blanco, momento de usar la función replace en psql. Para ello ejecuto la siguiente consulta:
update bultos_de_empleados set fecha_terminacion = replace(fecha_terminacion, 'T', ' ');
Ahora las fechas son:
select fecha_terminacion from bultos_de_empleados;
fecha_terminacion
---------------------
2020-03-05 22:37:26
2020-03-09 23:33:48
2020-03-09 23:33:52
2020-03-11 00:08:34
2020-03-13 13:20:20
2020-03-13 13:23:53
2020-03-05 22:30:12
2020-03-05 22:30:15
2020-03-05 22:30:17
2020-03-05 22:30:19
2020-03-05 22:30:21
(11 rows)
Por cierto, es importante notar que en este caso el remplazo es global, es decir, si hubiera más letras T
en esa columna, todas se habrían remplazado.
Hola, buen día.
Tengo el siguiente caso y no puedo resolverlo.
Si yo tengo el nombre de una persona “Manzo Alfredo Daniel”. Y, deseo reemplazar el primer espacio en blanco de la cadena con una “,” (por ejemplo). Si utilizo lo siguiente:
“Update Tabla1 set PersApeNomb = replace(PersApeNomb, ‘ ‘, ‘,’) where Id=1025;”
Eso me va a reemplazar todos los espacios con la coma.
De qué forma puedo reemplazar la primera ocurrencia o espacio?
Se puede en el segundo parámetro de la función hacer algo como para “ataje” solamente ese espacio en blanco y lo cambie!!?
Muy buen sitio.
Un cordial saludo
Tal vez algo como lo siguiente: https://stackoverflow.com/questions/17002782/how-to-replace-the-first-occurrence-of-character-e-in-a-string-with-s-in-ora
O puede hacerlo desde algún lenguaje de programación