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

Oracle regexp_replace द्वारा अंतरिक्ष से अलग की गई सूची से डुप्लिकेट कैसे निकालें?

अगर मैं अच्छी तरह से समझूं कि आपको केवल ',' को एक स्थान से बदलने की जरूरत नहीं है, बल्कि डुप्लिकेट को बेहतर तरीके से निकालने की भी जरूरत है।

अगर मैं उस अभिव्यक्ति को ',' के बजाय स्थान के साथ काम करने के लिए संशोधित करता हूं, तो मुझे मिलता है

select regexp_replace('A B A A C D' ,'([^ ]+)( [ ]*\1)+', '\1') from dual

जो देता है 'A B A C D' , वह नहीं जो आपको चाहिए।

अपना आवश्यक परिणाम प्राप्त करने का एक तरीका निम्नलिखित हो सकता है, थोड़ा अधिक जटिल:

with string(s) as ( select 'A B A A C D' from dual)    
    select listagg(case when rn = 1 then str end, ' ') within group (order by lev)
    from (
            select str,  row_number() over (partition by str order by 1) rn, lev
            from (
                SELECT trim(regexp_substr(s, '[^ ]+', 1, level)) str,
                       level as lev
                  FROM string
                CONNECT BY instr(s, ' ', 1, level - 1) > 0
                )
         )

यहां मेरी मुख्य समस्या यह है कि मैं एक रेगेक्सपी बनाने में सक्षम नहीं हूं जो गैर आसन्न डुप्लीकेट की जांच करता है, इसलिए मुझे स्ट्रिंग को विभाजित करने, डुप्लिकेट की जांच करने और ऑर्डर को ध्यान में रखते हुए गैर डुप्लीकेट मानों को फिर से एकत्रित करने की आवश्यकता है।

यदि आपको परिणाम स्ट्रिंग में टोकन के क्रम से कोई आपत्ति नहीं है, तो इसे सरल बनाया जा सकता है:

with string(s) as ( select 'A B A A C D' from dual)
select listagg(str, ' ') within group (order by 1)
from (
        SELECT distinct trim(regexp_substr(s, '[^ ]+', 1, level)) as str
          FROM string
        CONNECT BY instr(s, ' ', 1, level - 1) > 0
     )


  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 SQL डेवलपर में संग्रहीत कार्यविधि को कैसे संपादित करें?

  2. प्राथमिक सूचकांक और द्वितीयक सूचकांक में वास्तव में क्या अंतर है?

  3. अनुवाद () Oracle में समारोह

  4. समवर्ती कार्यक्रम के लिए प्राथमिकता कैसे बदलें

  5. किसी अन्य तालिका में किसी अन्य कॉलम का उपयोग करके एक कॉलम को कैसे अपडेट करें? SQL त्रुटि:ORA-00933:SQL आदेश ठीक से समाप्त नहीं हुआ