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

तार के बीच समानता वापस करने के लिए Oracle समारोह

अपने प्रश्न को फिर से पढ़ने के बाद, यहाँ वही होगा जो आप वास्तव में चाहते थे:

with cte1 as  (
    select 1 id, 'abc def hijk www' str from dual
    union all
    select 2 id, 'abc def iosk www' str from dual
), num_gen as (
    -- a number generator up to the minimum length of the strings
    SELECT level num
    FROM dual t
    CONNECT BY level <= (select min(length(str)) from cte1)
), cte2 as (
    -- build substrings of increasing length
    select id, num_gen.num, substr(cte1.str, 1, num_gen.num) sub
    from cte1
    cross join num_gen
), cte3 as (
    -- self join to check if the substrings are equal
    select x1.num, x1.sub sub1, x2.sub sub2
    from cte2 x1
    join cte2 x2 on (x1.num = x2.num and x1.id != x2.id)
), cte4 as (
    -- select maximum string length
    select max(num) max_num
    from cte3
    where sub1 = sub2
)
    -- finally, get the substring with the max length
    select cte3.sub1
    from cte3
    join cte4 on (cte4.max_num = cte3.num)
    where rownum = 1

अनिवार्य रूप से, आप pl/sql में यही करेंगे:बढ़ती लंबाई के सबस्ट्रिंग बनाएं और उस बिंदु पर रुकें जहां वे अब मेल नहीं खा रहे हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ORA-01031:दृश्य का चयन करते समय अपर्याप्त विशेषाधिकार

  2. डेटा प्रवाह कार्य के लिए फ़ोरैच लूप कंटेनर

  3. PLSQL गतिशील क्वेरी

  4. आकाशवाणी। यदि पैरामीटर शून्य है तो सभी का चयन करें अन्यथा विशिष्ट आइटम समस्या लौटाएं

  5. सरल Oracle चयन कथन वाक्य रचना