Corriger l’erreur « Cannot resolve the collation conflict between « xxx » and « yyy » in the equal to operation. » sur SQL Server

La comparaison de 2 chaines dans une requête est lourd mais parfois inévitable pour comparer 2 colonnes. Si ces 2 colonnes sont dans 2 bases de données diffèrentes, il peut y avoir des conflits de “collation” :

Cannot resolve the collation conflict between "French_CI_AS" and "SQL_Latin1_General_CP1_CI_AS" in the equal to operation.

pour la requête suivante :

SELECT table1.colonne1
FROM dbo.table1 AS t1
JOIN dbo.table2 AS t2 ON (t1.colonne1 = t2.colonne2 COLLATE collationTable1);

Ici la table1 a pour collation French_CI_AS et table2 a pour collation **SQL_Latin1_General_CP1_CI_AS. **

La requête correcte est ici :

SELECT table1.colonne1
FROM dbo.table1 AS t1
JOIN dbo.table2 AS t2 ON (table1.colonne1 = t2.colonne2 COLLATE French_CI_AS);

Voir également