Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Hàm Oracle trả về sự giống nhau giữa các chuỗi

Sau khi đọc lại câu hỏi của bạn, đây sẽ là những gì bạn thực sự muốn:

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

Về cơ bản, đây là những gì bạn sẽ làm trong pl / sql:Xây dựng các chuỗi con có độ dài tăng dần và dừng lại tại điểm mà chúng không khớp nữa.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sự khác biệt giữa hàm RANK () và DENSE_RANK () trong oracle là gì?

  2. Làm thế nào để thay đổi cấu trúc bảng trong Oracle?

  3. Bỏ qua biến thay thế khi điều kiện không được thỏa mãn

  4. Dấu gạch dưới không hoạt động trong mệnh đề oracle like

  5. Trong Oracle AS bí danh không hoạt động