Effectuer une jointure LIKE dans SQL
Lors de la mise en correspondance de valeurs entre deux tables à l'aide d'une jointure, il peut y avoir des cas où une colonne d'une table doit correspondre à n’importe quelle partie d’une colonne d’une autre table. Ceci est souvent réalisé en utilisant l'opérateur LIKE dans la condition de jointure.
Disons que vous avez deux tables, la table A et la table B, et que vous souhaitez les joindre à une condition où la colonne A du tableau A est "comme" columnB dans le tableau B. Cela signifie que la correspondance peut inclure la valeur complète de la colonne B ou les caractères avant ou après celle-ci.
Utilisation d'INSTR :
Une méthode consiste à utiliser la fonction INSTR() dans la condition de jointure :
SELECT *
FROM TABLE A
JOIN TABLE B ON INSTR(B.columnB, A.columnA) > 0
Utilisation de LIKE :
Une autre option consiste à utiliser l'opérateur LIKE avec des caractères génériques :
SELECT *
FROM TABLE A
JOIN TABLE B ON B.columnB LIKE '%' A.columnA '%'
Utilisation de LIKE avec CONCAT :
Vous pouvez également concaténer les symboles génériques avec la colonne valeur à l'aide de la fonction CONCAT() :
SELECT *
FROM TABLE A
JOIN TABLE B ON B.columnB LIKE CONCAT('%', A.columnA ,'%')
Conversion majuscule :
Pour garantir des correspondances insensibles à la casse, il est recommandé de convertir les valeurs des colonnes en majuscules avant de les comparer :
SELECT *
FROM (SELECT UPPER(A.columnA) 'ua' FROM TABLE A) A
JOIN (SELECT UPPER(B.columnB) 'ub' FROM TABLE B) B ON INSTR(B.ub, A.ua) > 0
Considérations d'efficacité :
L'efficacité de ces méthodes peut varier en fonction de la structure spécifique de la base de données et des tables. Il est conseillé de vérifier la sortie du plan EXPLAIN pour déterminer l'approche la plus optimale.
ANSI vs. Non-ANSI JOINs :
ANSI JOINs suivent une syntaxe standardisée, tandis que les non-ANSI JOINs suivent une syntaxe standardisée, tandis que les non-ANSI JOINs suivent une syntaxe standardisée. Les ANSI JOIN utilisent une syntaxe plus traditionnelle. Dans ce cas, la clause JOIN est équivalente à la clause WHERE dans un JOIN non-ANSI :
SELECT *
FROM TABLE A,
TABLE B
WHERE INSTR(B.columnB, A.columnA) > 0
L'utilisation des ANSI JOIN offre l'avantage de séparer la condition de jointure de la condition de filtre dans la clause WHERE.
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