Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

क्या ओरेकल पार्स की गई स्ट्रिंग/क्लोब पंक्ति से एकाधिक सबस्ट्रिंग वापस करने का तरीका प्रदान करता है?

कुछ ऐसा हो सकता है:

CREATE OR REPLACE FUNCTION explode(longline varchar)
  RETURN sys.dbms_debug_vc2coll PIPELINED
IS  
  pos PLS_INTEGER;
  lastpos PLS_INTEGER;
  element varchar(2000);
BEGIN
   lastpos := 1;
   pos := instr(longline, ',');

   while pos > 0 loop
      element := substr(longline, lastpos, pos - lastpos);
      lastpos := pos + 1;
      pos := instr(longline, ',', lastpos);
      pipe row(element);
   end loop;

   if lastpos <= length(longline) then
      pipe row (substr(longline, lastpos));
   end if;

   RETURN;
END;  
/

इसे इस तरह इस्तेमाल किया जा सकता है:

SQL> select * from table(explode('1,2,3'));

COLUMN_VALUE
---------------------------------------------
1
2
3
SQL>

यदि आप 11.x पर नहीं हैं तो आपको रिटर्न प्रकार को स्वयं परिभाषित करना होगा:

create type char_table as table of varchar(4000);

और फंक्शन डिक्लेरेशन को इसमें बदलें:

CREATE OR REPLACE FUNCTION explode(longline varchar)
  RETURN char_table pipelined
.....



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ऑरैकल डेटाबेस में BigInteger मानों को कैसे स्टोर करें?

  2. Oracle थोक आयात

  3. SQL डेवलपर के कॉलम मानों में छिपे हुए दोहरे उद्धरण चिह्नों को कैसे हटाएं

  4. लिस्टैग ओवरफ्लो फ़ंक्शन कार्यान्वयन (ओरेकल एसक्यूएल)

  5. ORA-00937:एकल-समूह समूह फ़ंक्शन नहीं - क्वेरी त्रुटि