您的位置:寻梦网首页编程乐园ASP编程>sql中的iif语句详解
ASP世界
sql中的iif语句详解
作者:佚名  转自:Internet

IIF函数

返回两部分之一,具体取决于表达式 (表达式:算术或逻辑运算符、常数、函数和字段名称、控件和属性的任意组合,计算结果为单个值。表达式可执行计算、操作字符或测试数据。)的计算结果。

在任何可以使用表达式的地方都可以使用 IIf。您可以使用 IIf 确定另一个表达式是 True 还是 False。如果该表达式为 True,则 IIf 返回某一个值;如果为 False,则 IIf 返回另一个值。您可以指定 IIf 返回的值。

语法

IIf(expr, truepart, falsepart)

IIf 函数的语法包含以下参数 (参数:为操作、事件、方法、属性、函数或过程提供信息的值。)

参数 说明
expr 必选。要计算的表达式。
truepart 必选。exprTrue 时返回的值或表达式。
falsepart 必选。exprFalse 时返回的值或表达式。

注解

尽管 IIf 只返回 truepartfalsepart 中的一个,但始终会对这两部分进行计算。因此,应当注意是否出现无谓的副作用。例如,如果计算 falsepart 时导致除数为零错误,那么即使 exprTrue,也会产生错误。

示例

在窗体或报表上使用 IIf  假定具有一个包含“国家/地区 (CountryRegion)”字段的“客户 (Customers)”表。在窗体中,您想要表示该联系人的首选语言是否是“意大利语 (Italian)”。可以添加一个控件并在其“控件来源”属性中使用 IIf,如下所示:

=IIf([CountryRegion]="Italy", "Italian", "Some other language")

在窗体视图中打开窗体时,只要“国家/地区”值为“意大利”,该控件就显示“意大利语”,只要“国家/地区”值为其他值,该控件就显示“其他语言 (Some other language)”。

在复杂表达式中使用 IIf  可以使用任何表达式作为 IIf 语句的一部分。也可以嵌套 IIf 表达式来评估一系列相关表达式。

例如,假设您在图书馆工作。该图书馆的数据库中具有一个名为“借出 (Check Outs)”的表,表中包含名为“截止日期 (Due Date)”的字段,该字段中包含有某本书的归还日期。您可以创建一个窗体,在控件中指示借出书籍的状态,方法是在该控件的“控件来源”属性中使用 IIf 函数,如下所示:

=IIf([Due Date]<Date(),"OVERDUE",IIf([Due Date]=Date(),"Due","Not Yet Due"))

在窗体视图中打开该窗体时,如果“截止日期”小于当前日期,则该控件显示“过期 (OVERDUE)”,如果该值正好是当前日期,则显示“到期 (Due)”,否则显示“尚未到期 (Not Yet Due)”。

在 VBA 代码中使用 IIf  

 注释   以下示例演示了此功能在 Visual Basic for Applications (VBA) 模块中的使用。有关使用 VBA 的详细信息,请在“搜索”旁边的下拉列表中选择“开发人员参考”,然后在搜索框中输入一个或多个词条。

以下示例使用 IIf 函数计算 CheckIt 过程的 TestMe 参数,如果数额大于 1000 则返回“大”;否则返回“小”。

Function CheckIt (TestMe As Integer)
    CheckIt = IIf(TestMe > 1000, "Large", "Small")
End Function



在Access中我可以用IIF函数进行统计汇总,比如,要知道实际应该交费的用户个数:
Select sum(iif(金额>0, 1,0)) as num from 费用

在SQL Server中好像没有对应的函数,我用:
select sum(case when 金额>0 then 1 else 0 end) as num from 费用
好像不太直观,不知道有没有其它方法

case when ....then else end
例:select id,case when bz='1' then xx when bz='2' then yy else zz end as tt from xxx
那MID,LEFT等呢?在SQL中怎么用?
MID 就是 SQL 里的substring
LEFT 就是 SQL 里的 LEFT
比如 substring(字段,开始位置,取多少长度)
left(字段,取多少长度)

SUBSTRING ( expression , start , length )
参数
expression
是字符串、二进制字符串、text、image、列或包含列的表达式。不要使用包含聚合函数的表达式。

start
是一个整数,指定子串的开始位置。

length
是一个整数,指定子串的长度(要返回的字符数或字节数)。


LEFT
返回从字符串左边开始指定个数的字符。

语法
LEFT ( character_expression , integer_expression )

参数
character_expression

字符或二进制数据表达式。character_expression 可以是常量、变量或列。character_expression 必须是可以隐式地转换为 varchar 的数据类型。否则,请使用 CAST 函数显式转换 character_expression。

integer_expression
是正整数。如果 integer_expression 为负,则返回空字符串。

返回类型
varchar