最新IBM水货笔记本价格,详细点击进入

查看完整版本: sql中的iif语句详解

风舞残阳 2008-4-2 17:54

sql中的iif语句详解

IIf
返回由[wiki]逻辑[/wiki][wiki]测试[/wiki]确定的两个数值或字符串值之一。

语法
数字
IIf(%26laquo;LogicalExpression%26raquo;,%26laquo;NumericExpression1%26raquo;,%26laquo;NumericExpression2%26raquo;)

如果%26laquo;LogicalExpression%26raquo;取值为TR[wiki]UE[/wiki],则此函数返回%26laquo;NumericExpression1%26raquo;,否则,返回%26laquo;NumericExpression2%26raquo;。

字符串
IIf(%26laquo;LogicalExpression%26raquo;,%26laquo;StringExpression1%26raquo;,%26laquo;StringExpression2%26raquo;)

如果%26laquo;LogicalExpression%26raquo;取值为TRUE,则此函数返回%26laquo;StringExpression1%26raquo;,否则,返回%26laquo;StringExpression2%26raquo;。

注释
只有当%26laquo;LogicalExpression%26raquo;的值为零时,才认为该表达式是FALSE。任何其它值都被解释为TRUE。
不推荐用Iif函数基于搜索条件创建成员的集合。请改用Filter函数根据逻辑表达式评估指定集合中的每个成员,然后返回成员的子集合。

示例
数字
如果Measures.CurrentMember是空单元,则下面的示例返回0,否则返回1:
IIf(IsEmpty(Measures.CurrentMember),0,1)

字符串
如果Measures.CurrentMember是空单元,则下面的字符串返回字符串"Yes",否则返回字符串"No":
IIf(IsEmpty(Measures.CurrentMember),"Yes","No")

在Access中我可以用IIF函数进行统计汇总,比如,要知道实际应该交费的用户个数:
Selectsum(iif(金额%26gt;0,1,0))asnumfrom费用
在[wiki]SQL[/wiki]Server中好像没有对应的函数,我用:
selectsum(casewhen金额%26gt;0then1else0end)asnumfrom费用
好像不太直观,不知道有没有其它方法

casewhen....thenelseend
例:selectid,casewhenbz='1'thenxxwhenbz='2'thenyyelsezzendasttfromxxx
那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的数据[wiki]类[/wiki]型。否则,请使用CAST函数显式转换character_expression。

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

返回类型
varchar
页: [1]
查看完整版本: sql中的iif语句详解