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

ORACLE - regexp_substr for at returnere nulværdier

@Gary_W har skrevet om problemet med at bruge det regex-mønster til at opdele strenge, netop på grund af hvordan det behandler tomme tags. (Og er på en mission... )

Den alternative tilgang i det indlæg fungerer også her, med pipeadskilleren undsluppet:

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                        

Tilsvarende for det tredje 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              

Og den fjerde:

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. Forespørg om sammenligning af datoer i SQL

  2. Har SQL Server 2005 en ækvivalent til MySqls ENUM-datatype?

  3. Databaseforbindelsesproblem stødt på ved brug af d2rq

  4. Omdøbning af indekser med sp_rename Procedure