En postgresql, ¿cómo reemplazo todas las instancias de una cadena dentro de una columna de base de datos?
Digamos que quiero reemplazar todas las instancias de cat
con dog
, por ejemplo.
¿Cuál es la mejor manera de hacer esto?
postgresql
replace
marca
fuente
fuente
Respuestas:
Desea utilizar la función de reemplazo de postgresql :
por ejemplo :
Sin embargo, tenga en cuenta que esto será un reemplazo de cadena a cadena, por lo que 'categoría' se convertirá en 'dogegory'. la función regexp_replace puede ayudarlo a definir un patrón de coincidencia más estricto para lo que desea reemplazar.
fuente
regexp_replace
La forma de expresión regular
Si necesita una coincidencia de reemplazo más estricta, la
regexp_replace
función de PostgreSQL puede coincidir utilizando patrones de expresión regular POSIX. Tiene la sintaxis regexp_replace (fuente, patrón, reemplazo [, banderas]) .Usaré banderas
i
yg
para mayúsculas y minúsculas, respectivamente. También usaré\m
y\M
para hacer coincidir el principio y el final de una palabra, respectivamente.Por lo general, hay bastantes problemas al realizar el reemplazo de expresiones regulares. Veamos qué fácil es reemplazar un gato con un perro .
Incluso después de todo eso, hay al menos una condición no resuelta. Por ejemplo, las oraciones que comienzan con "Cat" serán reemplazadas por "dog" en minúsculas que rompen las mayúsculas de las oraciones.
Consulte los documentos actuales de coincidencia de patrones de PostgreSQL para obtener todos los detalles.
Actualizar columna completa con texto de reemplazo
Dados mis ejemplos, tal vez la opción más segura sería:
fuente
Puedes usar la
replace
funciónLa definición de la función es la siguiente (obtenida de aquí ):
y devuelve el texto modificado. También puede consultar este violín sql .
fuente
Aquí hay un ejemplo que reemplaza todas las instancias de 1 o más caracteres de espacio en blanco en una columna con un guión bajo utilizando expresiones regulares:
fuente