如何将此转换为T-Sql?
IIf([ESSValue]<>0,Int([ESSValue]*100),"")
答案 0 :(得分:1)
我认为以下内容几乎可以满足您的需求:
select coalesce(cast(EssValue * 100 as int), 0)
这是思考。与零的比较并不重要,因为0倍的任何值都将为零。 iif()
返回一个整数(我认为),因为“then”参数是一个整数;空字符串转换为零。
我不是100%肯定关于MS Access的最后一个语句,但这就是iif()
在SQL Server中的工作方式。
我应该补充一下。虽然我不赞成使用iif()
条件表达式(因为case
是标准且功能更强大),但SQL Server确实支持它。所以你可以写:
IIf([ESSValue]<>0, cast([ESSValue]*100 as int), '')
注意:正如我之前提到的,''
将转换为0
。
答案 1 :(得分:0)
CASE WHEN ESSValue <> 0
THEN CAST(ESSValue * 100 AS INT)
ELSE NULL
END as fieldname
对于案例表达式,如果不满足任何条件,则默认值为NULL
,因此您实际上不需要ELSE
条件