PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Postgresql - Comment extraire la première occurrence d'une sous-chaîne dans une chaîne à l'aide d'un modèle d'expression régulière ?

Vous pouvez utiliser regexp_matches() à la place :

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

Comme aucun indicateur supplémentaire n'est passé, regexp_matches() ne renvoie que la première correspondance - mais il renvoie un tableau, vous devez donc choisir le premier (et le seul) élément du résultat (c'est le [1] partie)

C'est probablement une bonne idée de limiter la mise à jour aux seules lignes qui correspondraient à la regex en premier lieu :

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