Press "Enter" to skip to content

Collation Che Passione Addendum

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.