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

Oracle:एक स्ट्रिंग के भीतर सबसे बड़ी संख्या ज्ञात करें

आप स्ट्रिंग को उसके सभी संख्या घटकों में टोकनाइज़ कर सकते हैं, और फिर अधिकतम प्राप्त कर सकते हैं:

select max(to_number(
    regexp_substr('sdfAB98:(hjkl,)AB188(uiop)uuuAB78:jknd', '(\d+)', 1, level))
  ) as max_value
from dual
connect by regexp_substr('sdfAB98:(hjkl,)AB188(uiop)uuuAB78:jknd', '(\d+)', 1, level)
  is not null;

 MAX_VALUE
----------
       188

या

select max(to_number(
    regexp_substr('sdfAB98:(hjkl,)AB188(uiop)uuuAB78:jknd', '(\d+)', 1, level, null, 1))
  ) as max_value
from dual
connect by level <= regexp_count('sdfAB98:(hjkl,)AB188(uiop)uuuAB78:jknd', '\d+');

 MAX_VALUE
----------
       188

यदि आपको कई पंक्तियों से मान प्राप्त करने की आवश्यकता है, तो आपको आईडी से मिलान करने के लिए कनेक्ट-बाय की आवश्यकता है, और लूपिंग को रोकने के लिए एक गैर-नियतात्मक फ़ंक्शन का संदर्भ भी शामिल करना होगा; CTE में दो मानों के साथ:

with your_table (id, str) as (
  select 1, 'sdfAB98:(hjkl,)AB188(uiop)uuuAB78:jknd' from dual
  union all select 2, '123abc456abc78d9' from dual
)
select id, max(to_number(regexp_substr(str, '(\d+)', 1, level, null, 1))) as max_value
from your_table
connect by prior id = id
and prior dbms_random.value is not null
and level <= regexp_count(str, '\d+')
group by id;

        ID  MAX_VALUE
---------- ----------
         1        188
         2        456


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या ऑरैकल 11 जी एक्सप्रेस संस्करण में एक छवि स्टोर करना संभव है?

  2. मैं jdbc url के साथ कनेक्शन स्ट्रिंग का उपयोग कैसे कर सकता हूं?

  3. आउटपुट टेक्स्ट फ़ाइल में कॉलम हैडर निकालें

  4. Oracle ODP.Net विद एंटिटी फ्रेमवर्क 6 - ORA-00955 ऑन सेलेक्ट फ्रॉम टेबल व्यू

  5. R12.2 अपग्रेड पार्ट -1 . के लिए चरण दर चरण अपग्रेड प्रक्रिया