Maison >base de données >tutoriel mysql >Comment puis-je implémenter un comparateur Java avec la fonctionnalité d'opérateur « LIKE » de SQL ?

Comment puis-je implémenter un comparateur Java avec la fonctionnalité d'opérateur « LIKE » de SQL ?

Linda Hamilton
Linda Hamiltonoriginal
2024-12-26 21:26:15760parcourir

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

Implémentation d'un comparateur Java avec la sémantique de l'opérateur 'LIKE' de SQL

En SQL, l'opérateur 'LIKE' est largement utilisé pour faire correspondre des chaînes basées sur sur des modèles spécifiques. Pour obtenir des fonctionnalités similaires en Java, nous pouvons créer un comparateur personnalisé qui présente le même comportement.

Solution utilisant des expressions régulières

Les expressions régulières de Java peuvent être utilisées pour émuler le Opérateur 'LIKE'. En utilisant le caractère générique « * », n'importe quelle séquence de caractères peut être mise en correspondance. Par exemple, l'expression régulière suivante correspondra à n'importe quelle chaîne contenant « ital » n'importe où :

.*ital.*

De même, un espace réservé à un seul caractère peut être représenté par un point ('.'). Ainsi, l'expression régulière ci-dessous correspondra à n'importe quelle chaîne avec « gi » suivi de n'importe quel caractère unique, se terminant par « a » :

.*gi.a.*

Pour faire correspondre un point littéral, échappez-le à l'aide d'une barre oblique :

\.

Implémentation du Comparateur

À l'aide d'expressions régulières, nous pouvons maintenant implémenter un Java comparateur qui se comporte comme l'opérateur 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;
    }
}

Exemple d'utilisation

Pour utiliser le comparateur, instanciez-le simplement et comparez les chaînes à l'aide de l'option 'comparer' méthode :

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn