Heim >Datenbank >MySQL-Tutorial >Wie kann ich einen Java-Komparator mit der „LIKE'-Operatorfunktionalität von SQL implementieren?

Wie kann ich einen Java-Komparator mit der „LIKE'-Operatorfunktionalität von SQL implementieren?

Linda Hamilton
Linda HamiltonOriginal
2024-12-26 21:26:15702Durchsuche

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

Implementieren eines Java-Komparators mit der Semantik des „LIKE“-Operators von SQL

In SQL wird der „LIKE“-Operator häufig zum Abgleichen von Zeichenfolgen verwendet auf bestimmte Muster. Um eine ähnliche Funktionalität in Java zu erreichen, können wir einen benutzerdefinierten Komparator erstellen, der das gleiche Verhalten zeigt.

Lösung mit regulären Ausdrücken

Die regulären Ausdrücke von Java können zur Emulation des verwendet werden 'LIKE'-Operator. Durch die Verwendung des Platzhalterzeichens „*“ kann jede beliebige Zeichenfolge abgeglichen werden. Der folgende reguläre Ausdruck passt beispielsweise zu jeder Zeichenfolge, die irgendwo „ital“ enthält:

.*ital.*

Ebenso kann ein Platzhalter für ein einzelnes Zeichen durch einen Punkt („.“) dargestellt werden. Der folgende reguläre Ausdruck passt also auf jede Zeichenfolge mit „gi“, gefolgt von einem einzelnen Zeichen, das mit „a“ endet:

.*gi.a.*

Um einen literalen Punkt abzugleichen, maskieren Sie ihn mit einem Schrägstrich:

\.

Implementieren des Komparators

Mithilfe regulärer Ausdrücke können wir jetzt einen Java-Komparator implementieren verhält sich wie der SQL-Operator „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;
    }
}

Beispielverwendung

Um den Komparator zu verwenden, instanziieren Sie ihn einfach und vergleichen Sie Zeichenfolgen mit der Methode „compare“:

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

Das obige ist der detaillierte Inhalt vonWie kann ich einen Java-Komparator mit der „LIKE'-Operatorfunktionalität von SQL implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn