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

Postgresql - Hvordan udtrækker jeg den første forekomst af en understreng i en streng ved hjælp af et regulært udtryksmønster?

Du kan bruge regexp_matches() i stedet:

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

Da der ikke sendes yderligere flag, regexp_matches() returnerer kun det første match - men det returnerer et array, så du skal vælge det første (og eneste) element fra resultatet (det er [1] del)

Det er sandsynligvis en god idé at begrænse opdateringen til kun rækker, der ville matche regex i første omgang:

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 'HVOR OG' problem

  2. skrive tabel i database med dplyr

  3. mysql NULL værdi i hvor i CLAUSE

  4. Grupperet sammenkædning i SQL Server