PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Postgresql - Come posso estrarre la prima occorrenza di una sottostringa in una stringa usando un modello di espressione regolare?

Puoi usare regexp_matches() invece:

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

Poiché non viene passato alcun flag aggiuntivo, regexp_matches() restituisce solo la prima corrispondenza, ma restituisce un array quindi è necessario selezionare il primo (e unico) elemento dal risultato (che è il [1] parte)

Probabilmente è una buona idea limitare l'aggiornamento alle sole righe che corrisponderebbero all'espressione regolare in primo luogo:

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