sql >> Database >  >> RDS >> Oracle

regexp_substr slaat lege posities over

De regexp_substr werkt als volgt:

Als het voorkomen groter is dan 1, dan zoekt de database naar het tweede voorkomen, beginnend met het eerste teken dat volgt op het eerste voorkomen van het patroon , enzovoorts. Dit gedrag wijkt af van de SUBSTR-functie, die begint te zoeken naar het tweede voorkomen bij het tweede teken van het eerste voorkomen.

Dus het patroon [^|] zoekt naar NIET-pijpen, wat betekent dat het opeenvolgende pijpen ("||") zal overslaan op zoek naar een niet-pijpteken.

Je zou kunnen proberen:

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

Dit vervangt een "|" met een "| " en u kunt matchen op basis van het patroon [^|]



  1. Hoe SOUNDS LIKE werkt in MariaDB

  2. Hoe utf-8 mb4-teken (emoji in ios5) in mysql in te voegen?

  3. MySQL Inner Join Query meerdere tabellen

  4. PostgreSQL-reeks gebaseerd op een andere kolom