Come fare una SELECT fra Tabelle/Database con Collation Diverse
Come addendum al precedente post, vi aggiungo questo breve codice che permette, quando non fosse possibile modificare le collation delle stringhe di un database oppure quando vi fosse necessità di effettuare una query su database diversi con collation non omogenee, di ottenere comunque i dati:
SELECT '>'+ [CODARTI] COLLATE Latin1_General_CI_AS +'<' as ARTICOLO ,[DSARTI] COLLATE Latin1_General_CI_AS AS DESCRIZIONE ,[TPARTI] COLLATE Latin1_General_CI_AS CATEGORIA , [DB_ESTERNO].[dbo].[TBARTICOLI].[IDARTI] AS ARTICOLO_EXT ,[DB_ESTERNO].[dbo].[TBARTICOLI].[DDARTI] AS DESCRIZIONE_EXT FROM [MYDB].[dbo].[TBARTI] LEFT OUTER JOIN [DBESTERNO].[dbo].[TBARTICOLI] ON [CODARTI] COLLATE Latin1_General_CI_AS = [DBESTERNO].[dbo].[TBARTICOLI].[IDARTI] WHERE [DBESTERNO].[dbo].[TBARTICOLI].[IDARTI] IS NULL
Questa query, serve per controllare la presenza degli articoli inseriti da una applicazione gestionale in un database contenente dati di produzione, una volta lanciata è possibile stabilire se necessario riallineare gli articoli in produzione con i nuovi articoli inseriti nel gestionale. I due database non hanno la stessa collation, per problemi di gestioni Legacy, ma è possibile comunque comparare le stringhe e visualizzarle in modo omogeneo utilizzando la clausola COLLATE ove necessario.