access语句转换为Sql
如何将此转换为T-Sqlaccess语句转换为Sql,sql,sql-server,tsql,ms-access,Sql,Sql Server,Tsql,Ms Access,如何将此转换为T-Sql IIf([ESSValue]<>0,Int([ESSValue]*100),"") IIf([ESSValue]0,Int([ESSValue]*100),“”) 值为0时的情况 然后强制转换(ESSValue*100为整数) 否则无效 以字段名结尾 对于case表达式,如果不满足任何条件,则默认值为NULL,因此您实际上不需要ELSE条件我认为以下内容非常符合您的要求: select coalesce(cast(EssValue * 100 as in
IIf([ESSValue]<>0,Int([ESSValue]*100),"")
IIf([ESSValue]0,Int([ESSValue]*100),“”)
值为0时的情况
然后强制转换(ESSValue*100为整数)
否则无效
以字段名结尾
对于case表达式,如果不满足任何条件,则默认值为
NULL
,因此您实际上不需要ELSE
条件我认为以下内容非常符合您的要求:
select coalesce(cast(EssValue * 100 as int), 0)
这是我的想法。与零的比较并不重要,因为0乘以任何值都将为零。iif()
返回一个整数(我认为),因为“then”参数是一个整数;空字符串被转换为零
关于MS Access的最后几句话,我不是100%确定,但这就是iif()
在SQL Server中的工作方式
我要补充一点。虽然我不赞成将iif()
用于条件表达式(因为case
是标准且更强大),但SQL Server确实支持它。所以你可以写:
IIf([ESSValue]<>0, cast([ESSValue]*100 as int), '')
IIf([ESSValue]0,强制转换([ESSValue]*100为整数),“”)
注意:正如我前面提到的,如果sql中的/else逻辑通常是在
case when
关键字时进行的,那么'
将转换为0。这是TSQL。若对整数进行运算,则不能返回字符串值。请改为尝试null。什么类型是[ESSValue]
??为什么要将其转换为整数??为什么默认值是“”。。。在Sql中,不能为同一字段[ESSValue]浮点类型返回两种不同的类型原始语句从不返回NULL
。
IIf([ESSValue]<>0, cast([ESSValue]*100 as int), '')