Posts

Showing posts with the label COLLATE

Error Message 468: Cannot resolve the collation conflict between “AAAA” and "BBBB" in the equal to operation. The Collate Error

Image
Hi Guys, Welcome back! World is becoming increasingly global and so, for this reason, we are increasingly dealing with SQL Server installations located in countries that are very different from ours . So, we have to talk absolutely about collation ! ERROR 468: Cannot resolve the collation conflict between “AAAA” and "BBBB" in the equal to operation Yes, I am sure! this error will have happened to you at least once:  Message 468, level 16, state 9, row 19 Cannot resolve the collation conflict between “AAAA” and "BBBB" in the equal to operation. What does this error tell us? The message say that there was a problem during the two column comparison (equal to). But what kind of problem? A problem with the comparison rules! The comparison rules are defined within the collations. To better understand let's take an example Let's create a table with the standard collate of our database and fill it with so...

COLLATE e SARGABLE

Image
Ben ritrovati! Anche oggi articolo leggero leggero.. Continuiamo con  il discorso di ieri che trovate qui: SQL Server: Come fare ricerche CASE SENSITIVE Abbiamo visto come eseguire una ricerca CASE SENSITIVE anche se il database non lo è. Abbiamo visto infatti che possiamo sfruttare la COLLATE per ottenere il risultato voluto. Ad esempio scrivendo una Query così: SELECT * FROM ELENCO WHERE CODICE COLLATE SQL_Latin1_General_CP1_CS_AS = 'luca' La domandi di oggi è la seguente: Ma se specifico una COLLATE nella WHERE, la stringa SQL che ottengo, è SARGABLE?    La collate è Sargable? Vediamolo, eseguiamo quindi la nostra Query e guardiamone il piano di esecuzione...   Che ne dite? Sul campo CODICE esiste un indice non clustered.   Di questo indice però ne viene fatta la scansione (SCAN) e non la SEEK e quindi la nostra Query NON E' SARGABLE! SQL Server sarà costretto a scorrersi e leggersi tutto l'indice e come risultato avremo scarse perfor...

SQL Server: Come fare ricerche CASE SENSITIVE

Image
Carissimi lettori, ben torrnati! L'articolo di ieri è stato sicuramente intenso ( Database corrotti, recupero tramite DBCC WRITEPAGES ) per cui oggi sarò molto più breve. Promesso! Vi farò vedere come eseguire una ricerca case sentitive anche se la collate impostata sul database non lo è. Ricerche case sensitive Supponiamo di aver impostato sul nostro database una collate che non è case sensitive. Ovvero non è sensibile alle maiuscole e minuscole. Supponiamo ora di avere una tabella "elenco" dentro la quale sono memorizzati una serie di nomi, come questa sotto: Ora, il nostro database non è case sensitive per cui una interrogazione come questa: SELECT * FROM ELENCO WHERE CODICE = 'LUCA' ritornerà sempre entrambi i record. Ma se volessimo restituito solamente il codice dove LUCA è scritto solo in minuscolo? Come fare? Bhe, il trucco è semplice. Avete presente quando abbiamo parlato nei giorni scorsi di COLLATE ?  (fai click qui: Error...

Errore Messaggio 468: Non è possibile risolvere il conflitto tra le regole di confronto "AAAA" e "BBBB" nell'operazione equal to.

Image
Howdy people! Il mondo è sempre più globale e per questo motivo sempre più spesso ci troviamo ad avere a che fare con installazioni di SQL Server localizzate in nazioni ben diverse dalla nostra.   Sono certo che questo errore vi sarà capitato almeno una volta: Messaggio 468, livello 16, stato 9, riga 19 Non è possibile risolvere il conflitto tra le regole di confronto "AAAA" e "BBBB" nell'operazione equal to. Ma cosa ci dice questo errore? Dice che durante l'operazione di confronto di due colonne (equal to) si è verificato un problema . Ma che tipo di problema? Un problema relativo alle regole di confronto! Le regole di confronto sono definite all'interno delle collation. Per capire meglio facciamo un esempio Creiamoci una tabella con la collate standard del nostro database e riempiamola con qualche dato. P.S. Per vedere qual'è la collate del nostro sistema è sufficiente eseguire: SELECT SERVERPROPERTY('collation'); ...