sql >> Base de Datos >  >> RDS >> PostgreSQL

Postgresql:¿cómo extraigo la primera aparición de una subcadena en una cadena usando un patrón de expresión regular?

Puede usar regexp_matches() en cambio:

update data1
  set full_text = (regexp_matches(full_text, 'I [0-9]{1,3}'))[1];

Como no se pasa ninguna bandera adicional, regexp_matches() solo devuelve la primera coincidencia, pero devuelve una matriz, por lo que debe elegir el primer (y único) elemento del resultado (ese es el [1] parte)

Probablemente sea una buena idea limitar la actualización solo a las filas que coincidan con la expresión regular en primer lugar:

update data1
  set full_text = (regexp_matches(full_text, 'I [0-9]{1,3}'))[1]
where full_text ~ 'I [0-9]{1,3}'