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

Tách chuỗi trong PL / SQL

Hãy thử thủ tục này !!

Điều này sẽ hoạt động nếu mẫu mô tả giống nhau với các khoảng trống được chỉ định và quy trình như mô tả, số điện thoại, Số lượng

create or replace procedure sp_split_str
as
     end_pos number:=0;
     strt_pos number :=1;
     CNT NUMBER:=0;
     v_desc varchar(200);
begin
     for i in (select * from table) loop
            if(instr(i.description,':',1,1)=0) then
                   dbms_output.put_line('Server Name : '||i.servername);
                   dbms_output.put_line('Description : '||substr(i.description,1,instr(i.description,'#',1,1)-2));
                   dbms_output.put_line('Phone Number : '||substr(i.description,instr(i.description,'#',1,1)+1,instr(i.description,'Q',-1,1)-2-instr(i.description,'#',1,1)));
                   dbms_output.put_line('Qty : '||substr(i.description,instr(i.description,'Q',-1,1)+4));           
                   dbms_output.put_line('Object State : '||i.objectstate);
            else
                   for J in 1..(length(i.description)-length(replace(i.description,':','')))+1 loop
                          IF(J=1) THEN
                                 end_pos := instr(i.description,':',1,1);
                                 v_desc := substr(i.description,strt_pos,end_pos-2);
                          ELSE
                                 end_pos := instr(i.description,':',1,j);
                                 strt_pos := instr(i.description,':',1,j-1);
                          END IF;
                          dbms_output.put_line('Server Name : '||i.servername);
                          dbms_output.put_line('Description : '||substr(v_desc,1,instr(v_desc,'#',1,1)-2));
                          dbms_output.put_line('Phone Number : '||substr(v_desc,instr(v_desc,'#',1,1)+1,instr(v_desc,'Q',-1,1)-2-instr(v_desc,'#',1,1)));
                          dbms_output.put_line('Qty : '||substr(v_desc,instr(v_desc,'Q',-1,1)+4));          
                          dbms_output.put_line('Object State : '||i.objectstate);

                          CNT := CNT+1;
                          IF(CNT=J) THEN
                                  v_desc := substr(i.description,strt_pos+2);
                          ELSE
                                  v_desc := substr(i.description,strt_pos+2,end_pos-2);
                          END IF;
                   END loop;
            end if;
      END LOOP;

END;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. KEY NGOẠI LỆ VỀ XÓA Lỗi HẠN CHẾ - Oracle

  2. Số Oracle thành số thập phân C #

  3. ORA-28113:vị từ chính sách có lỗi

  4. Cách chuyển varchar với các dấu nháy đơn đến Stored Proc trong Oracle

  5. Tạo danh sách thả xuống từ giá trị trong php cơ sở dữ liệu