PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Postgresql - Como extraio a primeira ocorrência de uma substring em uma string usando um padrão de expressão regular?


Você pode usar regexp_matches() em vez de:
update data1
  set full_text = (regexp_matches(full_text, 'I [0-9]{1,3}'))[1];

Como nenhum sinalizador adicional é passado, regexp_matches() apenas retorna a primeira correspondência - mas retorna uma matriz, então você precisa escolher o primeiro (e único) elemento do resultado (que é o [1] papel)

Provavelmente é uma boa ideia limitar a atualização apenas a linhas que correspondam ao regex em primeiro lugar:
update data1
  set full_text = (regexp_matches(full_text, 'I [0-9]{1,3}'))[1]
where full_text ~ 'I [0-9]{1,3}'