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

PL/SQL अल्पविराम सीमांकित सूची; डुप्लिकेट हटाएं और सरणी में डालें

अल्पविराम से अलग की गई सूचियों को पंक्तियों में बदलने के लिए एक प्रसिद्ध SQL चाल है। बस उस ट्रिक का उपयोग करें, एक DISTINCT जोड़ें कीवर्ड, और BULK COLLECT आपके सरणी में परिणाम (मुझे लगता है कि आपका मतलब संग्रह है)।

DECLARE
  p_test_string   VARCHAR2 (4000) := 'A,B,C,B,B,D';

  TYPE string_array_type IS TABLE OF VARCHAR2 (4000);

  l_array         string_array_type;
BEGIN
  SELECT DISTINCT REGEXP_SUBSTR (p_test_string,
                        '[^,]+',
                        1,
                        LEVEL)
  BULK   COLLECT INTO l_array
  FROM   DUAL
  CONNECT BY REGEXP_SUBSTR (p_test_string,
                            '[^,]+',
                            1,
                            LEVEL)
               IS NOT NULL
  ORDER BY 1;

  DBMS_OUTPUT.put_line ('l_array.count = ' || l_array.COUNT);
  DBMS_OUTPUT.put_line ('l_array(2) = ' || l_array (2));
END;

आउटपुट:

l_array.count = 4
l_array(2) = B


  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.EntityFrameworkCore में कार्यान्वयन नहीं है' प्रकार में 'विधि' get_Info 'को कैसे ठीक करें।

  2. SQL सर्वर को Oracle से कनेक्ट करना

  3. कैसे एक संग्रहीत समारोह या प्रक्रिया का उपयोग किए बिना, एक रिटर्न वैल्यू पैरामीटर के रूप में सी # ODP.NET से एक Oracle रेफ कर्सर का उपयोग करने के लिए?

  4. पर्ल स्क्रिप्ट में इनपुट पैरामीटर और आउट कर्सर के साथ एक संग्रहीत प्रक्रिया को लागू करना

  5. oracle को php . से जोड़ने के लिए OCI8 को स्थापित और कॉन्फ़िगर करें