sql >> Databáze >  >> RDS >> PostgreSQL

Postgresql – Jak extrahuji první výskyt podřetězce v řetězci pomocí vzoru regulárního výrazu?

Můžete použít regexp_matches() místo toho:

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

Protože není předán žádný další příznak, regexp_matches() vrátí pouze první shodu - ale vrátí pole, takže musíte vybrat první (a jediný) prvek z výsledku (to je [1] část)

Pravděpodobně je dobré omezit aktualizaci pouze na řádky, které by v první řadě odpovídaly regulárnímu výrazu:

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


  1. Vynutit jedinečné hodnoty ve dvou tabulkách

  2. Vytvořte uživatele z řetězcových proměnných v bloku PL/SQL

  3. Jak zachovat proměnné php z předchozí stránky po odeslání formuláře

  4. získat předchozí hodnotu pro řádky null