Oracle
 sql >> Baza danych >  >> RDS >> Oracle

ORACLE - regexp_substr zwraca wartości null

@Gary_W napisał o tym problem z użyciem tego wzorca wyrażeń regularnych do dzielenia ciągów, właśnie ze względu na to, jak traktuje puste znaczniki. (A jest na misji... )

Alternatywne podejście w tym poście działa również tutaj, z ucieknięciem ogranicznika rury:

with t (str) as (
  select '1|CAT|DOG' from dual
  union all select '3|HARRY|GOAT|STACK' from dual
  union all select '6||LION|TIGER' from dual
)
select str, regexp_substr(str, '(.*?)(\||$)', 1, 2, null, 1) from t;

STR                REGEXP_SUBSTR(STR,
------------------ ------------------
1|CAT|DOG          CAT               
3|HARRY|GOAT|STACK HARRY             
6||LION|TIGER                        

Podobnie dla trzeciego elementu:

select str, regexp_substr(str, '(.*?)(\||$)', 1, 3, null, 1) from t;

STR                REGEXP_SUBSTR(STR,
------------------ ------------------
1|CAT|DOG          DOG               
3|HARRY|GOAT|STACK GOAT              
6||LION|TIGER      LION              

I czwarta:

select str, regexp_substr(str, '(.*?)(\||$)', 1, 4, null, 1) from t;

STR                REGEXP_SUBSTR(STR,
------------------ ------------------
1|CAT|DOG                            
3|HARRY|GOAT|STACK STACK             
6||LION|TIGER      TIGER             


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle 12c IDENTYFIKOWANE WARTOŚCIAMI

  2. Wystąpił błąd podczas wykonywania procedury od programisty sql

  3. Zgodność wersji Oracle Client i ODP.NET

  4. Oracle Sql Loader ORA-01722:nieprawidłowy numer podczas ładowania pliku CSV z zakończeniami wiersza Windows

  5. Czy można wykonać funkcję grupowania bitowego?