Je rencontre parfois ce message d’erreur en faisant des requêtes SQL entre 2 bases de données SQL Server :

Impossible de résoudre le conflit de classement entre “SQL_Latin1_General_CP1_CI_AS” et “French_CI_AS” dans l’opération equal to.

Comme je ne suis sans doute pas le seul, autant partager la solution !

Le problème vient de la comparaison de deux champs n’ayant pas le même classement, il faut donc les forcer à faire pareil.

La solution réside dans ces 2 mots : “COLLATE FRENCH_CI_AS”

Exemple :

SELECT * FROM table1 LEFT OUTER JOIN table2
ON table1.champ1 = table2.champ2 COLLATE FRENCH_CI_AS

Si vous vous servez de sous-requêtes, et que la même erreur se produit, le code marche pareil mais ne se met pas exactement au même endroit, voir ici avec un IN :

SELECT * FROM table1
WHERE table1.champ1 COLLATE FRENCH_CI_AS in (select…)

Bonnes requêtes 2011 @ vous !

Fermer