CASE 语句中的 TSQL NVARCHAR 转换错误
TSQL NVARCHAR Conversion Error inside CASE statement
这个select快把我逼疯了。
错误是:
Conversion error converting nvarchar value '17.30 h' to int data type.
数据为:
(DateTime) (Nvarchar) (DateTime)
DATAINICI DATAMANUAL DATAFI
null 17.30 h 10/01/2015
01/01/2015 20.30 h null
语句是:
CASE WHEN dbo.Activitat.DataInici is null
THEN DATEPART(DAY,Activitat.Datafi)
ELSE CONVERT(NVARCHAR(50), dbo.Activitat.DataManual)
END
由于隐式转换,您收到此错误。 CASE
returns NVARCHAR(50)
的一部分,即 CONVERT(NVARCHAR(50), dbo.Activitat.DataManual)
无法转换为 int
,另一部分 returns 为 int
即 DATEPART(DAY,Activitat.Datafi)
.
这样的事情也会return同样的错误。
SELECT CASE WHEN 1=2 THEN 1 ELSE 'errorstring' END
你应该在这两种情况下 CONVERT
和 return NVARCHAR(50)
这样就没有隐式转换。像这样。
CASE WHEN dbo.Activitat.DataInici is null
THEN CONVERT(NVARCHAR(50),DATEPART(DAY,Activitat.Datafi))
ELSE CONVERT(NVARCHAR(50), dbo.Activitat.DataManual)
END