Oracle
 sql >> база данни >  >> RDS >> Oracle

ORACLE - regexp_substr за връщане на нулеви стойности

@Gary_W писа за проблемът с използването на този шаблон на регулярен израз за разделяне на низове, точно поради начина, по който третира празните тагове. (И е на мисия... )

Алтернативният подход в тази публикация работи и тук, с екраниран разделител:

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                        

По същия начин за третия елемент:

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              

И четвъртото:

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 с имена на динамични таблици

  2. Изключение за нарушение на ограничение ORA-00001

  3. ROWID (оракул) - има ли полза от него?

  4. Как да стартирате sql скриптове от pl sql процедура

  5. AWS Python Lambda с Oracle - Неуспешно генериране на OID дори след добавяне на HOSTALIASES