Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengira Peratusan Kesamaan String dalam MySQL?

Bagaimana untuk Mengira Peratusan Kesamaan String dalam MySQL?

Mary-Kate Olsen
Lepaskan: 2024-12-30 17:59:09
asal
268 orang telah melayarinya

How to Calculate String Similarity Percentage in MySQL?

Cara Mengira Kesamaan Rentetan dalam MySQL

Masalah:

Anda mempunyai dua rentetan dalam MySQL dan perlu menentukannya peratusan persamaan. Sebagai contoh, memandangkan rentetan "@a = 'Selamat Datang ke Limpahan Tindanan'" dan "@b = 'Hello untuk limpahan tindanan'", anda ingin mencari persamaan antara mereka.

Penyelesaian:

  1. Buat Jarak Levenshtein Fungsi:

    Gunakan fungsi berikut untuk mengira jarak Levenshtein antara dua rentetan:

    CREATE FUNCTION `levenshtein`(s1 text, s2 text) RETURNS int(11)
    DETERMINISTIC
    BEGIN 
    ...
    END
    Salin selepas log masuk

    Fungsi di atas disesuaikan daripada yang disediakan di http://www.artfulsoftware .com/infotree/queries.php#552.

  2. Buat Fungsi Nisbah Kesamaan Levenshtein:

    Untuk menukar jarak Levenshtein kepada nisbah persamaan, gunakan fungsi ini:

    CREATE FUNCTION `levenshtein_ratio`( s1 text, s2 text ) RETURNS int(11)
    DETERMINISTIC
    BEGIN 
    ...
    END
    Salin selepas log masuk

Penggunaan:

Untuk mengira peratusan persamaan antara dua rentetan, gunakan yang berikut formula:

similarity_percentage = ((1 - LEVENSHTEIN(s1, s2) / MAX_LENGTH) * 100)
Salin selepas log masuk
  • LEVENSHTEIN(s1, s2): Mengira jarak Levenshtein antara dua rentetan.
  • MAX_LENGTH: Panjang maksimum kedua-dua rentetan rentetan.

Contoh:

SELECT levenshtein_ratio('Welcome to Stack Overflow', 'Hello to stack overflow') AS similarity;
Salin selepas log masuk

Pertanyaan ini akan mengembalikan peratusan persamaan antara dua rentetan, yang dalam kes ini ialah 66%.

Atas ialah kandungan terperinci Bagaimana untuk Mengira Peratusan Kesamaan String dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan