错误将varchar值隐式转换为varchar

时间:2014-02-06 15:53:24

标签: sql sql-server tsql sql-server-2005

我有我的选择

SELECT  CONVERT(VARCHAR ,p.DataRegistrazione, 103)  AS DataRegistrazione, ld.BarcodeFronte, ld.BarcodeRetro, ld.CodiceMSP, ld.CodiceFiscale, ld.Cognome, ld.Nome, ld.Sesso,
        CONVERT(VARCHAR ,ld.DataNascita,103) AS DataNascita, Convert(VARCHAR ,ld.DataAccettazione,103) AS DataAccettazione , ld.RepartoAccettazione, ld.NumeroEpisodio, ld.CodiceEsenzione, ld.TipoDoc, ld.Attivo,
        ld.FlagLavorato, CONVERT(VARCHAR ,ld.FlagSpunta) AS FlagSpunta, Convert(VARCHAR ,ld.DataSpunta,103) AS DataSpunta, ld.Batch,
        CONVERT(VARCHAR ,p.Data,103) AS Data, CONVERT(VARCHAR ,p.Posizione) AS Posizione, CONVERT(VARCHAR ,p.IsDownloaded) AS IsDownloaded , 
        CONVERT(VARCHAR ,CASE WHEN p.SystemField3 IS NULL THEN 0 ELSE 1 END) AS Caricato  

FROM dbo.LavorazioniDES ld LEFT OUTER JOIN dbo.PSafed p ON ld.BarcodeFronte COLLATE DATABASE_DEFAULT = p.BarcodeFronte COLLATE DATABASE_DEFAULT 

WHERE  Convert(VARCHAR ,ld.DataSpunta,103) = convert(VARCHAR ,DATEADD(day,-1,GETDATE()),103) AND ld.FlagLavorato IN ('000','002') AND IsDeleted=0

我得到了这个错误,我不知道我应该改变什么转换?

Implicit conversion of varchar value to varchar cannot be performed because the collation of the value is unresolved due to a collation conflict

1 个答案:

答案 0 :(得分:0)

SELECT  CONVERT(VARCHAR(103), p.DataRegistrazione) AS DataRegistrazione ,
        ld.BarcodeFronte ,
        ld.BarcodeRetro ,
        ld.CodiceMSP ,
        ld.CodiceFiscale ,
        ld.Cognome ,
        ld.Nome ,
        ld.Sesso ,
        CONVERT(VARCHAR(103), ld.DataNascita) AS DataNascita ,
        CONVERT(VARCHAR(103), ld.DataAccettazione) AS DataAccettazione ,
        ld.RepartoAccettazione ,
        ld.NumeroEpisodio ,
        ld.CodiceEsenzione ,
        ld.TipoDoc ,
        ld.Attivo ,
        ld.FlagLavorato ,
        CONVERT(VARCHAR(103), ld.FlagSpunta) AS FlagSpunta ,
        CONVERT(VARCHAR(103), ld.DataSpunta) AS DataSpunta ,
        ld.Batch ,
        CONVERT(VARCHAR(103), p.Data) AS Data ,
        CONVERT(VARCHAR(103), p.Posizione) AS Posizione ,
        CONVERT(VARCHAR(103), p.IsDownloaded) AS IsDownloaded ,
        CASE WHEN p.SystemField3 IS NULL THEN 0
             ELSE 1
        END AS Caricato
FROM    dbo.LavorazioniDES ld
        LEFT OUTER JOIN dbo.PSafed p ON ld.BarcodeFronte 
COLLATE DATABASE_DEFAULT = p.BarcodeFronte COLLATE DATABASE_DEFAULT
WHERE   CONVERT(VARCHAR(103), ld.DataSpunta) = CONVERT(VARCHAR(103), DATEADD(day, -1, GETDATE()))
        AND ld.FlagLavorato IN ( '000', '002' )
        AND IsDeleted = 0

注意:CONVERT()应为Col1 = CONVERT(VARCHAR(255),Col1)