top of page

SPLIT in PLSQL

Writer's picture: Rumesh Aponso (RMAX)Rumesh Aponso (RMAX)

Updated: Nov 22, 2024

Way 1

-- ^ value delimiter
DECLARE
   temp_attr_ VARCHAR2(32000);
   
   CURSOR get_splitted_values IS
      SELECT  REGEXP_SUBSTR(temp_attr_, '[^^]+', 1, LEVEL) AS split_value
      FROM    DUAL
      CONNECT BY REGEXP_SUBSTR(temp_attr_, '[^^]+', 1, LEVEL) IS NOT NULL;
BEGIN
   temp_attr_ := 'value1^value2^value3^value4^value5^value6^value7^value8^';
   
   FOR rec_ IN get_splitted_values LOOP
      Dbms_Output.Put_Line(rec_.split_value);
   END LOOP;
END;

Way 2

DECLARE
   attr_                VARCHAR2(32000);
  
   rec_delim_           VARCHAR2(100);
   rec_count_           NUMBER;
   temp_rec_            VARCHAR2(32000);
  
   value_delim_         VARCHAR2(100);
   value_count_         NUMBER;
   temp_value_          VARCHAR2(32000);
BEGIN
   rec_delim_   := '[^;]+'; -- ; record delimiter
   value_delim_ := '[^^]+'; -- ^ value delimiter
 
   attr_ := '123^AAA^;108242-5^BBB^;01-HH-105^CCC^;456^DDD^;';
  
   rec_count_ := REGEXP_COUNT(attr_, rec_delim_);
 
   FOR k_ IN 1..rec_count_ LOOP
      Dbms_Output.Put_Line('record: ' || k_);
     
      temp_rec_    := REGEXP_SUBSTR(attr_, rec_delim_, 1, k_);
      value_count_ := REGEXP_COUNT(temp_rec_, value_delim_);
     
      FOR j_ IN 1..value_count_ LOOP
         temp_value_ := REGEXP_SUBSTR(temp_rec_, value_delim_, 1, j_);
         Dbms_Output.Put_Line('   value_ : ' || temp_value_);
      END LOOP;
     
      Dbms_Output.Put_Line('');
   END LOOP;
END;

5 views0 comments

Related Posts

See All

Fnd Dynamic Tab Page in IEE Client

[FndWindowRegistration("YVVDA_COMPANY_ADDR", "YvvdaCompanyAddr", FndWindowRegistrationFlags.HomePage)] [FndDynamicTabPage("frmCompanyAddr...

LISTAGG in PLSQL

Example 1: SELECT DISTINCT LISTAGG(t.commission_receiver, ';') WITHIN GROUP (ORDER BY t.commission_receiver) FROM...

Get Foundation Error from ORA Error

FUNCTION Strip_Ora_Error ( sqlerrm_        IN VARCHAR2,    sqlcode_        IN NUMBER DEFAULT NULL,    strip_ora_only_ IN BOOLEAN DEFAULT...

Comments


Copyright © 2025 RMAXOneNote

  • Online CV
  • LinkedIn
  • Youtube
  • GitHub
  • Blogger
bottom of page