有人要求我将Access DB中使用VBA创建的项目迁移到带有Server 2008 R2的R2。我在其他线程中读到,在这样的Server版本中,函数IIF并不是作为内置函数出现的,创建它也无助于它,因为'=‘操作符不能用来表示第一个参数中的布尔值,而且使用的问题是某些IIF的表达式中有多个表达式要计算。
简而言之,这会产生一个错误,“不定义=运算符”。
Iif(Value1 = Value2, 'Some return', 'Another return')并且像下面这样的IIF表达式不能被翻译成一个CASE表达式。
Iif((Value1 = Value2) And (Value3 = Value4), 'Value to return if true', 'Value to return if false')我目前正在创建存储过程,并利用编程结构来克服这个问题,但这似乎是一个效率低下的解决办法,因为有许多嵌套的IIF。
我的问题是,是否有一种更有效的方法来做到这一点?还是我应该坚持使用存储过程?
提前谢谢。
发布于 2016-07-05 15:27:55
可以将两个IIF调用转换为CASE表达式:
IIF(Value1 = Value2, 'Some return', 'Another return')
IIF((Value1 = Value2) AND (Value3 = Value4), 'Value to return if true', 'Value to return if false')可以重写为
CASE WHEN Value1 = Value2 THEN 'Some return' ELSE 'Another return' END和
CASE WHEN (Value1 = Value2) AND (Value3 = Value4)
THEN 'Value to return if true'
ELSE 'Value to return if false'
ENDhttps://stackoverflow.com/questions/38207187
复制相似问题