sql >> Databasteknik >  >> RDS >> PostgreSQL

Postgresql - Hur extraherar jag den första förekomsten av en delsträng i en sträng med hjälp av ett reguljärt uttrycksmönster?

Du kan använda regexp_matches() istället:

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

Eftersom ingen ytterligare flagga skickas, regexp_matches() returnerar bara den första matchningen - men den returnerar en array så du måste välja det första (och enda) elementet från resultatet (det är [1] del)

Det är förmodligen en bra idé att begränsa uppdateringen till endast rader som skulle matcha regexet i första hand:

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


  1. MySQL-fråga med flera LIMITS

  2. Vad avgör om rails inkluderar id::serial i en tabelldefinition?

  3. Android:hur man laddar upp en bild i mysql med php

  4. Hur man sammanfogar resultat av 2 tabeller baserat på icke-villkor