Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Fungsi Oracle untuk mengembalikan kesamaan antar string

Setelah membaca ulang pertanyaan Anda, inilah yang sebenarnya Anda inginkan:

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

Pada dasarnya, inilah yang akan Anda lakukan di pl/sql:Bangun substring dengan panjang yang bertambah dan berhenti pada titik di mana mereka tidak cocok lagi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PLS-00306:nomor atau jenis argumen yang salah dalam panggilan ke 'OUTPUT_ARRAY'

  2. Menyetel SQL

  3. tampilan oracle dan lalu lintas jaringan

  4. Bagaimana Oracle memproses panggilan fungsi tersimpan dalam SQL?

  5. Iterasi pada baris tabel kedua untuk mengembalikan hasil set