SQL conflit de Classement lors de la comparaison d'une colonne dans une table temporaire
J'ai une requête SQL qui permet de comparer une valeur dans la base de données à une constante:
SELECT * FROM my_table
INNER JOIN #TempTable tem
ON my_table.id = temp.id
AND my_table.key = 'SOME STRING'
Et j'obtiens l'erreur:
Cannot resolve the collation conflict between "SQL_Latin1_General_CP1_CI_AS" and "Latin1_General_CI_AS" in the equal to operation.
Comment puis-je contourner ce problème? (sans apporter de modifications à la base de données)
Mise à JOUR: je reçois ce message d'erreur même si je supprimer le dernier comme (comparaison de chaîne)...
OriginalL'auteur Justin | 2009-09-10
Vous devez vous connecter pour publier un commentaire.
Semble que votre
id
's sontVARCHAR
s avec des classements différents.Essayez ceci:
Génial m'a aidé dans un pincement. Étonnamment, j'ai eu ce entre deux tables temporaires mais de toute façon cette travaillé pour résoudre le problème.
OriginalL'auteur Quassnoi
Spécifier le classement à l'intérieur de la déclaration de votre table temp.
OriginalL'auteur Dimi Takis
Le problème est que la température de la table. Il utilise le classement de la base de données tempdb.
Vous pouvez créer une table dans votre db et non pas une table temp et puis ils ont le même classement. Ou spécifier le classement lors de la création de la table temporaire.
Bon point ... car ils sont créés en même temps, j' tort généralement de regarder le classement de maître pour trouver de classement de la base de données tempdb. editted à intégrer réponse correcte. Ta 🙂
De mauvais conseils pour contourner par la création d'un "normale temporaire" de la table dans votre base de données. Il existe deux techniques pour veiller à ce que la température de la table utilise un compatible de classement: Kev Riley donne une, (stackoverflow.com/a/1404916/224704) a l'autre.
OriginalL'auteur Daniel Elliott
essayer
OriginalL'auteur Kev Riley