2014-02-06 3 views
0

У меня есть ВЫБРАТЬОшибки Неявного преобразования значения VARCHAR в VARCHAR

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 
+2

Это не ответ на ваш вопрос, но никогда не используйте 'VARCHAR()' без длины аргумента. Он имеет значение по умолчанию, которое является «1» в некоторых контекстах. Код должен иметь нечто вроде 'varchar (255)' или любую вашу желаемую длину. –

+0

Почему бы вам не удалить свой 'Convert()' s по одному и сузить его до какого поля (ов), вызывающего у вас проблемы? – gvee

+0

Возможно, вам понадобится еще одна 'COLLATE DATABASE_DEFAULT' после присоединения WHERE к конвертированным датам:' Convert() = Convert (...) COLLATE DATABASE_DEFAULT'. Collation + date cast ouch :-) – StuartLC

ответ

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)

Смежные вопросы