Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Melaksanakan Pembanding Java dengan Fungsi Pengendali `LIKE` SQL?

Bagaimanakah Saya Boleh Melaksanakan Pembanding Java dengan Fungsi Pengendali `LIKE` SQL?

Linda Hamilton
Linda Hamiltonasal
2024-12-26 21:26:15704semak imbas

How Can I Implement a Java Comparator with SQL's `LIKE` Operator Functionality?

Melaksanakan Pembanding Java dengan Semantik Operator 'LIKE' SQL

Dalam SQL, operator 'LIKE' digunakan secara meluas untuk pemadanan berdasarkan rentetan pada corak tertentu. Untuk mencapai kefungsian serupa dalam Java, kami boleh mencipta pembanding tersuai yang mempamerkan gelagat yang sama.

Penyelesaian Menggunakan Ungkapan Biasa

Ekspresi biasa Java boleh digunakan untuk meniru pengendali 'LIKE'. Dengan menggunakan aksara kad bebas '*', sebarang jujukan aksara boleh dipadankan. Sebagai contoh, ungkapan biasa berikut akan sepadan dengan mana-mana rentetan yang mengandungi 'ital' di mana-mana sahaja:

.*ital.*

Begitu juga, pemegang tempat aksara tunggal boleh diwakili oleh titik('.'). Jadi, ungkapan biasa di bawah akan memadankan mana-mana rentetan dengan 'gi' diikuti dengan mana-mana aksara tunggal, berakhir dengan 'a':

.*gi.a.*

Untuk memadankan titik literal, elakkannya menggunakan garis miring:

\.

Melaksanakan Pembanding

Menggunakan ungkapan biasa, kami kini boleh melaksanakan Java pembanding yang berkelakuan seperti pengendali SQL 'LIKE':

import java.util.Comparator;
import java.util.regex.Pattern;

public class LikeComparator implements Comparator<String> {

    @Override
    public int compare(String s1, String s2) {
        Pattern pattern = Pattern.compile(s2);
        return pattern.matcher(s1).matches() ? 0 : 1;
    }
}

Contoh Penggunaan

Untuk menggunakan pembanding, hanya buat seketika dan bandingkan rentetan menggunakan 'bandingkan' kaedah:

LikeComparator comparator = new LikeComparator();

System.out.println(comparator.compare("digital", "%ital%")); // true
System.out.println(comparator.compare("digital", "%gi?a%")); // true
System.out.println(comparator.compare("digital", "digi%")); // true
System.out.println(comparator.compare("digital", "%cam%")); // false
System.out.println(comparator.compare("digital", "tal%")); // false

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Pembanding Java dengan Fungsi Pengendali `LIKE` SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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