Select CASE WHEN loc ='J' THEN 'Y'
WHEN loc NOT IN ('J') THEN 'N'
ELSE 0 END AS loc FROM [prd].[dbo].[GRP]
EXCEPT
Select location FROM [prd1].[dbo].[GRPO] WHERE VALUE IN('Y','N');错误:
将varchar值'Y‘转换为数据类型int时,转换失败。
两个表中的两个列仅为相同的数据类型(varchar)。
发布于 2017-01-13 15:55:15
Case语句从result_expressions中的类型集和可选的else_result_expression返回最高优先级类型。由于0 (INT)具有比Y (Varchar)更高的优先级,因此Y被隐式转换为INT,因此您将得到转换错误。
将0(INT)更改为ELSE语句中的'0'(String)
Select CASE WHEN loc = 'J' THEN 'Y'
WHEN loc <> 'J' THEN 'N' -- loc NOT IN ('J')
ELSE '0' ENDhttps://stackoverflow.com/questions/41638506
复制相似问题