Joindre des tables avec LIKE en SQL
Lors de l'exécution d'une jointure, vous pouvez rencontrer des scénarios dans lesquels la condition de correspondance nécessite une correspondance de chaîne partielle à l'aide de LIKE opérateur. Cela implique de faire correspondre une colonne d'une table avec une colonne d'une autre table, où les valeurs correspondantes peuvent être précédées ou suivies de caractères.
Pour résoudre ce problème, vous pouvez utiliser plusieurs approches :
Utilisation d'INSTR :
Cette méthode utilise la fonction INSTR, qui vérifie si une sous-chaîne existe dans une chaîne.
<code class="sql">SELECT * FROM TABLE a JOIN TABLE b ON INSTR(b.column, a.column) > 0</code>
Utilisation de LIKE :
Vous pouvez également utiliser l'opérateur LIKE avec des caractères génériques % pour faire correspondre n'importe quel nombre de caractères.
<code class="sql">SELECT * FROM TABLE a JOIN TABLE b ON b.column LIKE '%'+ a.column +'%'</code>
Utiliser LIKE avec CONCAT :
Un autre La technique consiste à concaténer les caractères génériques % avec la valeur de la colonne à l'aide de la fonction CONCAT.
<code class="sql">SELECT * FROM TABLE a JOIN TABLE b ON b.column LIKE CONCAT('%', a.column ,'%')</code>
Correspondance insensible à la casse :
Dans tous les cas, il est recommandé de convertir la colonne les valeurs doivent être mises en majuscules avant la comparaison pour garantir une correspondance insensible à la casse.
<code class="sql">SELECT * FROM (SELECT UPPER(a.column) 'ua' FROM TABLE a) a JOIN (SELECT UPPER(b.column) 'ub' FROM TABLE b) b ON INSTR(b.ub, a.ua) > 0</code>
Le choix de la méthode dépendra de facteurs tels que l'efficacité et la compatibilité de la base de données. Consultez le résultat du plan EXPLAIN pour déterminer l’approche optimale. Notez que la syntaxe JOIN est équivalente à la clause WHERE équivalente.
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!