首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >内置函数IIF

内置函数IIF
EN

Stack Overflow用户
提问于 2016-07-05 15:21:59
回答 1查看 839关注 0票数 0

有人要求我将Access DB中使用VBA创建的项目迁移到带有Server 2008 R2的R2。我在其他线程中读到,在这样的Server版本中,函数IIF并不是作为内置函数出现的,创建它也无助于它,因为'=‘操作符不能用来表示第一个参数中的布尔值,而且使用的问题是某些IIF的表达式中有多个表达式要计算。

简而言之,这会产生一个错误,“不定义=运算符”。

代码语言:javascript
运行
复制
Iif(Value1 = Value2, 'Some return', 'Another return')

并且像下面这样的IIF表达式不能被翻译成一个CASE表达式。

代码语言:javascript
运行
复制
Iif((Value1 = Value2) And (Value3 = Value4), 'Value to return if true', 'Value to return if false')

我目前正在创建存储过程,并利用编程结构来克服这个问题,但这似乎是一个效率低下的解决办法,因为有许多嵌套的IIF。

我的问题是,是否有一种更有效的方法来做到这一点?还是我应该坚持使用存储过程?

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-05 15:27:55

可以将两个IIF调用转换为CASE表达式:

代码语言:javascript
运行
复制
IIF(Value1 = Value2, 'Some return', 'Another return')
IIF((Value1 = Value2) AND (Value3 = Value4), 'Value to return if true', 'Value to return if false')

可以重写为

代码语言:javascript
运行
复制
CASE WHEN Value1 = Value2 THEN 'Some return' ELSE 'Another return' END

代码语言:javascript
运行
复制
CASE WHEN (Value1 = Value2) AND (Value3 = Value4)
     THEN 'Value to return if true'
     ELSE 'Value to return if false'
END
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38207187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档