Posts Tagged query

Risolvere collation conflict in SQL Server

State avendo a che fare con questo fastidiosissimo errore?
Cannot resolve collation conflict for equal to operation.

Il collation è un set di caratteri utilizzato per gestire alfabeti di diversi linguaggi, edè composto da una serie di regole per gestire in confronti tra caratteri dello stesso alfabeto. Si ottiene l’errore di collation conflict quando si tenta di confrontare due campi con collation diversi.

Per ovviare al problema, senza cambiare il collate definito sulla tabella, dobbiamo effettuare un cast su uno dei due campi, come mostrato nell’esempio:
tab1.c1 è un char(2) ed ha collate SQL_Latin1_General_CP1_CI_AS
tab2.c2 è un char(2) edha collate SQL_Latin1_General_CI_AS
La prima query non effettua il cast e va in errore, la seconda viene eseguita con successo

SELECT *
FROM tab1 JOIN tab2
ON tab1.c1 = tab2.c2

Cannot resolve collation conflict for equal to operation.

SELECT *
FROM tab1 JOIN tab2
ON tab1.c1 COLLATE Latin1_General_CI_AS = tab2.c2

Attenzione al fatto che eventuali indici sulla colonna soggetta al cast non verranno considerati!

, , , ,

2 Comments