我试图运行一个查询,其中下面的CASE语句是其中一行.我正在使用Report Builder 3.0.
但是,我收到的错误是:
将varchar值'Case 1'转换为数据类型int时转换失败; Microsoft SQL Server,错误:245".
为什么CASE语句要求THEN部分是INT数据类型?
(CASE
WHEN jobs.Uf_Production_Line = 'LN BM6'
THEN 'Case 1'
ELSE
99999
END
) AS line
Run Code Online (Sandbox Code Playgroud)
使用CASEstatement时,所有结果表达式必须具有相同的数据类型.如果不是,则结果将转换为具有更高优先级的数据类型.据BOL说
返回result_expressions中的类型集和可选的else_result_expression中的最高优先级类型.
而且,由于INT具有更高的数据类型优先比VARCHAR,你的查询会产生一个错误:
将varchar值'Case 1'转换为数据类型int时转换失败; Microsoft SQL Server,错误:245".
要解决此问题,您应该将您的ELSE零件转换为VARCHAR.
ELSE '99999'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1172 次 |
| 最近记录: |