访问语句转换为 Sql

Posted

技术标签:

【中文标题】访问语句转换为 Sql【英文标题】:access statement convert to Sql 【发布时间】:2017-11-01 14:04:55 【问题描述】:

这个怎么转换成T-Sql?

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

【问题讨论】:

sql 中的 if/else 逻辑通常使用 case when 关键字完成。 这是 TSQL。如果您正在对整数进行操作,则不能返回字符串值。请尝试使用 null。 [ESSValue] 是什么类型??为什么将其转换为整数?为什么默认是“”......在Sql中你不能为同一个字段返回两种不同的类型 [ESSValue] 浮点型 【参考方案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

【讨论】:

【参考方案2】:
CASE WHEN ESSValue <> 0 
     THEN CAST(ESSValue * 100 AS INT)
     ELSE NULL
END as fieldname

对于 case 表达式,如果不满足任何条件,则默认为 NULL,因此您实际上不需要 ELSE 条件

【讨论】:

原始语句永远不会返回NULL

以上是关于访问语句转换为 Sql的主要内容,如果未能解决你的问题,请参考以下文章

如何将带有内连接语句的 Sql 查询转换为带有 Where 语句的 sql 查询(语句中没有内连接)

Access IIF 到 SQL 语句的转换

查询 sql 语句,为null转换为0怎么做

将 PHP 数组转换为 SQL 语句?

python操作excel转换为sql语句

将 SQL CASE WHEN 语句转换为 C#