access语句转换为Sql

时间:2017-11-01 14:04:55

标签: sql sql-server tsql ms-access

如何将此转换为T-Sql?

IIf([ESSValue]<>0,Int([ESSValue]*100),"")

2 个答案:

答案 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条件