Recherche efficace de valeurs séparées par des virgules dans la base de données MySQL
Lorsque vous travaillez avec des tables de données contenant des valeurs séparées par des virgules, il est possible de trouver des correspondances spécifiques être une tâche difficile. Dans ce cas, vous disposez de deux tables : customer (contenant les adresses e-mail) et imap_emails (où le champ to contient les adresses e-mail séparées par des virgules). Vous devez effectuer une recherche efficace dans la table imap_emails en fonction des adresses e-mail de la table clients.
Au lieu d'utiliser une condition LIKE, vous pouvez tirer parti de la fonction FIND_IN_SET pour effectuer une recherche plus ciblée. Cette fonction vous permet de vérifier si une valeur spécifique est trouvée dans une chaîne séparée par des virgules.
Solution :
La requête suivante montre comment vous pouvez utiliser FIND_IN_SET pour une recherche :
SELECT * FROM imap_emails INNER JOIN customers ON FIND_IN_SET(customers.email, imap_emails.to) > 0
Cette requête effectue une jointure interne entre les deux tables, faisant correspondre les lignes où l'e-mail du client est présent dans le champ séparé par des virgules à de la table imap_emails. En utilisant FIND_IN_SET au lieu de LIKE, vous améliorez l'efficacité de la recherche et évitez les faux positifs.
Considérations supplémentaires :
Dans votre question, vous avez mentionné que vous ne pouvez pas utiliser de relations entre les tableaux. Cependant, si vous avez la possibilité d'établir une relation (par exemple en utilisant des clés étrangères), cela améliorerait considérablement l'intégrité des données et les performances de vos requêtes de recherche.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3