sql >> Databáze >  >> RDS >> Oracle

regexp_substr přeskakuje prázdné pozice

Regexp_substr funguje takto:

Pokud je výskyt větší než 1, pak databáze hledá druhý výskyt začínající prvním znakem následujícím po prvním výskytu vzoru , a tak dále. Toto chování se liší od funkce SUBSTR, která začíná hledat druhý výskyt u druhého znaku prvního výskytu.

Vzor [^|] tedy bude hledat NON potrubí, což znamená, že přeskočí po sobě jdoucí potrubí ("||") hledající znak bez potrubí.

Můžete zkusit:

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

Toto nahradí "|" s "| " a umožní vám porovnat na základě vzoru [^|]



  1. SQL - Odečtení vyčerpávající hodnoty od řádků

  2. Jak vygenerovat jedinečné ID v MySQL?

  3. Jak zkontrolovat velikost databáze v MySQL

  4. 3 způsoby, jak vrátit časové pásmo z hodnoty Datetime v Oracle