PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Postgresql - Wie extrahiere ich das erste Vorkommen einer Teilzeichenfolge in einer Zeichenfolge mithilfe eines regulären Ausdrucksmusters?

Sie können regexp_matches() verwenden stattdessen:

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

Da kein zusätzliches Flag übergeben wird, regexp_matches() gibt nur die erste Übereinstimmung zurück - aber es gibt ein Array zurück, sodass Sie das erste (und einzige) Element aus dem Ergebnis auswählen müssen (das ist der [1] Teil)

Es ist wahrscheinlich eine gute Idee, die Aktualisierung nur auf Zeilen zu beschränken, die überhaupt mit der Regex übereinstimmen würden:

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