Maison > base de données > tutoriel mysql > Comment joindre des tables avec une condition LIKE pour des correspondances partielles ?

Comment joindre des tables avec une condition LIKE pour des correspondances partielles ?

Patricia Arquette
Libérer: 2024-10-31 17:59:00
original
1090 Les gens l'ont consulté

How to Join Tables with a LIKE Condition for Partial Matches?

Joindre des tables avec une condition LIKE

Lors de l'interrogation de données de plusieurs tables, il est souvent nécessaire de les joindre en fonction de critères spécifiques. Une exigence courante consiste à récupérer les lignes correspondantes dans lesquelles une colonne d'une table contient une valeur qui correspond exactement ou partiellement à une colonne d'une autre table. Ce scénario est résolu en utilisant l'opérateur LIKE en conjonction avec une instruction JOIN.

Utilisation d'INSTR

<code class="sql">SELECT *
FROM TABLE_A a
JOIN TABLE_B b ON INSTR(b.column, a.column) > 0;</code>
Copier après la connexion

La fonction INSTR vérifie si la valeur dans b.column contient la valeur dans a. colonne, quels que soient les caractères qui la précèdent ou la suivent.

Utilisation de LIKE

<code class="sql">SELECT *
FROM TABLE_A a
JOIN TABLE_B b ON b.column LIKE '%'+ a.column +'%'</code>
Copier après la connexion

L'opérateur LIKE effectue une correspondance de modèle, permettant aux caractères génériques (*) de représenter n'importe quel nombre de caractères précédents ou suivants . Dans ce cas, le modèle est %a.column%, garantissant une correspondance si b.column contient a.column n'importe où dans sa valeur.

Utilisation de LIKE avec CONCAT

<code class="sql">SELECT *
FROM TABLE_A a
JOIN TABLE_B b ON b.column LIKE CONCAT('%', a.column ,'%')</code>
Copier après la connexion

Similaire à Dans l'exemple précédent, cette technique utilise la fonction CONCAT pour construire le modèle de manière dynamique. Elle obtient le même résultat que la requête LIKE précédente.

Sensibilité à la casse

Pour garantir des comparaisons insensibles à la casse, il est conseillé de convertir les valeurs des colonnes en majuscules avant d'effectuer la jointure.

<code class="sql">SELECT *
FROM (SELECT UPPER(a.column) AS upper_a
       FROM TABLE_A) a
JOIN (SELECT UPPER(b.column) AS upper_b
       FROM TABLE_B) b ON INSTR(upper_b, upper_a) > 0;</code>
Copier après la connexion

Considérations sur l'efficacité

La méthode la plus efficace pour JOINER des tables avec une condition LIKE dépend de la base de données spécifique et du comportement de l'optimiseur de requêtes. Il est recommandé d'utiliser la fonctionnalité EXPLAIN PLAN pour déterminer le chemin d'exécution le plus optimal.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal