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.
<code class="sql">SELECT * FROM TABLE_A a JOIN TABLE_B b ON INSTR(b.column, a.column) > 0;</code>
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.
<code class="sql">SELECT * FROM TABLE_A a JOIN TABLE_B b ON b.column LIKE '%'+ a.column +'%'</code>
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.
<code class="sql">SELECT * FROM TABLE_A a JOIN TABLE_B b ON b.column LIKE CONCAT('%', a.column ,'%')</code>
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.
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>
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!