Cette erreur SQL Server se produit lorsque vous comparez des colonnes provenant de différentes tables qui ont une collation différente.
Comprendre les collations
Passons rapidement en revue la signification de ce qu’est une collation.
Par exemple :
Latin1_General_100_CI_AIest une collation moderne avec les règles de tri de la version 100 avec une insensitivité à la casse et les accents.SQL_Latin1_General_CP1_CI_ASest une collation héritée de SQL Server avec une insensitivité à la casse, mais les accents.
où :
CIsignifie Insensible à la casseAIsignifie Insensible aux AccentsASsignifie sensible aux accents
Choisissez la solution selon ce que vous avez besoin (utiliser COLLATE dans la requête) ou que vous voulez standardiser votre base de données (modifier la collation des colonnes).
Voici les solutions pour résoudre le problème.
Utilisez COLLATE dans votre requête
Ajoutez COLLATE DATABASE_DEFAULT à l’une des colonnes de votre comparaison :
|
|
Si vous souhaitez aligner les collations de manière permanente :
|
|
Table existante et table temporaire
Lorsque vous ne pouvez pas modifier une table existante, mais que vous pouvez contrôler la définition de la table temporaire, vous devez faire correspondre la collation de la table temporaire à celle de la table existante.
Voici comment définir votre table temporaire :
|
|
Pour trouver la collation exacte de la table
Si vous n’êtes pas sûr de la collation utilisée sur une ExistingTable et la colonne Code, exécutez ceci :
|
|
Utilisez ensuite la collation exacte dans la définition de votre table temporaire.
Alternative : Correction au moment de la jointure
Si vous préférez ne pas changer la définition de la table temporaire, vous pouvez toujours corriger le problème dans votre requête.
Dans mon cas, j’ai découvert le problème avec la clause join :
|
|
Mais définir la table temporaire avec la collation correcte dès le départ est plus propre et évite d’avoir à utiliser des clauses COLLATE tout au long de vos requêtes.
Documentation
Référence : Microsoft Learn.
Suivez-moi !
Merci d’avoir lu cet article. Assurez-vous de me suivre sur X, de vous abonner à ma publication Substack et d’ajouter mon blog à vos favoris pour ne pas manquer les prochains articles.
Photo de Microsoft Server