Maison >base de données >tutoriel mysql >Comment pouvez-vous effectuer une opération JOIN où la condition de correspondance implique une colonne d'une table contenant une sous-chaîne d'une colonne d'une autre table ?
Utilisation de LIKE dans un SQL JOIN
En SQL, effectuer une opération JOIN nécessite souvent de spécifier une condition de correspondance entre les colonnes de différentes tables. L'une de ces conditions consiste à faire correspondre une colonne du tableau A avec une colonne du tableau B, où le contenu de la colonne B peut varier avant ou après le contenu de la colonne A. Ce scénario nécessite l'utilisation de l'opérateur LIKE.
Pour y parvenir, vous avez plusieurs options :
<code class="sql">SELECT * FROM TABLE a JOIN TABLE b ON INSTR(b.column, a.column) > 0</code>
Ici, INSTR() renvoie la position du premier occurrence de la valeur de la colonne A dans la colonne B. Les lignes correspondantes sont celles dont la position est supérieure à 0.
<code class="sql">SELECT * FROM TABLE a JOIN TABLE b ON b.column LIKE '%'+ a.column +'%'</code>
Cette méthode ajoute des caractères génériques des deux côtés de la valeur de la colonne A, permettant à tous les caractères de la précéder ou de la suivre dans la colonne B.
<code class="sql">SELECT * FROM TABLE a JOIN TABLE b ON b.column LIKE CONCAT('%', a.column ,'%')</code>
Semblable à l'approche précédente, cette méthode construit une chaîne avec des caractères génériques de chaque côté de la valeur de la colonne A à l'aide de la fonction CONCAT().
Pour garantir une correspondance insensible à la casse, il est Il est recommandé de convertir les deux colonnes en majuscules avant de les comparer. Ceci peut être réalisé en utilisant la fonction UPPER().
Notez que la méthode la plus efficace dépendra de la base de données spécifique et des données impliquées, telles que déterminées en examinant la sortie du plan EXPLAIN.
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!