Maison  >  Article  >  base de données  >  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 ?

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 ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-26 18:29:29383parcourir

How can you perform a JOIN operation where the matching condition involves a column from one table containing a substring of a column from another 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 :

  1. En utilisant INSTR :
<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.

  1. Utiliser LIKE directement :
<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.

  1. Utiliser LIKE avec CONCAT :
<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!

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