Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

ORACLE - regexp_substr để trả về giá trị rỗng

@Gary_W đã viết về vấn đề với việc sử dụng mẫu regex đó để phân chia chuỗi, chính vì cách nó xử lý các thẻ trống. (Và đang thực hiện một nhiệm vụ ... )

Cách tiếp cận thay thế trong bài đăng đó cũng hoạt động ở đây, với dấu phân cách ống đứng thoát ra:

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                        

Tương tự cho phần tử thứ ba:

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              

Và thứ tư:

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. SQL (ORACLE):ORDER BY và LIMIT

  2. Cảnh báo thời gian chờ đợi dành cho cơ sở dữ liệu EM12c

  3. oracle pl / sql DBMS_LOCK lỗi

  4. Không thể kết nối với Oracle qua VBA - Trình điều khiển SQLSetConnectAttr không thành công

  5. oracle sql - tìm các mặt hàng phổ biến được mua giữa hai người dùng