Heim >Datenbank >MySQL-Tutorial >Wie kann ich einen Java-Komparator mit der „LIKE'-Operatorfunktionalität von SQL implementieren?
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!