sql >> Database teknologi >  >> RDS >> Oracle

regexp_substr springer over tomme positioner

Regexp_substr fungerer på denne måde:

Hvis forekomsten er større end 1, så søger databasen efter denne anden forekomst begyndende med det første tegn efter den første forekomst af mønsteret , og så videre. Denne adfærd er forskellig fra funktionen SUBSTR, som begynder sin søgning efter den anden forekomst ved det andet tegn i den første forekomst.

Så mønsteret [^|] vil lede efter IKKE-rør, hvilket betyder, at det vil springe på hinanden følgende rør over ("||") på udkig efter en ikke-rørkul.

Du kan prøve:

select trim(regexp_substr(replace('A|test||string', '|', '| '), '[^|]+', 1, 4)) from dual;

Dette vil erstatte et "|" med et "| " og giver dig mulighed for at matche baseret på mønsteret [^|]



  1. Indsæt Update lagret proc på SQL Server

  2. Konvertering af tal til ord i MYSQL-resultat! Brug af Query

  3. Installer PostgreSQL på Ubuntu 20.04

  4. Komplet brugerregistreringssystem ved hjælp af PHP og MySQL database