我需要在case语句中将日期转换为字符串,如下所示,但出现错误
将数据类型nvarchar转换为数字时出错
CASE
WHEN Code='X' and Category=1 THEN X_Col
WHEN Code='Y' THEN Y_Col
WHEN Code='Z' THEN CAST(Z_Col AS nvarchar(20))
END AS Res
我知道是否可以进行以下操作,但在某些情况下我需要检查两列
CASE Code
WHEN 'X' THEN X_Col
WHEN 'Y' THEN Y_Col
WHEN 'Z' THEN CAST(Z_Col AS nvarchar(20))
END AS Res
任何帮助将不胜感激。
答案 0 :(得分:1)
您能尝试一下吗?
CASE
WHEN Code='X' and Category=1 THEN CAST(X_Col nvarchar(20))
WHEN Code='Y' THEN CAST(Y_Col nvarchar(20))
WHEN Code='Z' THEN CAST(Z_Col AS nvarchar(20))
END AS Res
表达式的返回类型是result_expressions和可选的else_result_expression中的类型集中的最高优先级类型。
Here,您可以看到数据类型优先级。因此,我想您的值之一是数字/整数,并且转换失败。
答案 1 :(得分:1)
问题不是因为在一种情况下使用2个条件,而是因为3种情况的数据类型可能有所不同。
最终情况将产生1列。因此,then
语句应仅具有1个数据类型。
将案件更改为
CASE
WHEN Code='X' and Category=1 THEN CAST(X_Col AS nvarchar(20))
WHEN Code='Y' THEN CAST(Y_Col AS nvarchar(20))
WHEN Code='Z' THEN CAST(Z_Col AS nvarchar(20))
END AS Res