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');
Run Code Online (Sandbox Code Playgroud)
错误:
将varchar值'Y'转换为数据类型int时转换失败.
两个表中的两列(varchar)仅具有相同的数据类型.
Case语句从result_expressions中的类型集和可选的else_result_expression返回最高优先级类型.由于0 (INT)优先级高于Y (Varchar),Y因此隐式转换为INT您正在获得转换错误.
变化0(INT)到'0'(String)的ELSE声明
Select CASE WHEN loc = 'J' THEN 'Y'
WHEN loc <> 'J' THEN 'N' -- loc NOT IN ('J')
ELSE '0' END
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
109 次 |
| 最近记录: |