sql中的iif语句详解


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

语法
数字
IIf(«Logical Expression», «Numeric Expression1», «Numeric Expression2»)

假如 «Logical Expression» 取值为 TRUE,则此函数返回 «Numeric Expression1»,不然,返回 «Numeric Expression2» 。

字符串
IIf(«Logical Expression», «String Expression1», «String Expression2»)

假如 «Logical Expression» 取值为 TRUE,则此函数返回 «String Expression1»,不然,返回 «String Expression2» 。

诠释
惟独当 «Logical Expression» 的值为零时,才认为该 抒发式是 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函数进行统计汇总, 比方,要晓得实际应该交费的消费者个数:



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