sql >> Database >  >> RDS >> Oracle

ORACLE - regexp_substr om null-waarden te retourneren

@Gary_W heeft geschreven over het probleem met het gebruik van dat regex-patroon om strings te splitsen, juist vanwege de manier waarop het lege tags behandelt. (En is op een missie... )

De alternatieve benadering in die post werkt hier ook, met het pijpscheidingsteken ontsnapt:

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                        

Hetzelfde geldt voor het derde element:

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              

En de vierde:

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. JSON-externe sleutels in PostgreSQL

  2. PG::SyntaxError for rails application

  3. Rijen samenvoegen tot CLOB

  4. Kan geen invoertype =afbeeldingswaarde vinden in $_POST