
根据表达式的值,来返回两部分中的其中一个。
语法: IIf(expr, truepart, falsepart)
参数:
expr,必要参数。用来判断真伪的表达式。
truepart,必要参数。如果 expr 为 True,则返回这部分的值或表达式。
falsepart,必要参数。如果expr为 False,则返回这部分的值或表达式。
举例:
a=iif(a=1,2,3)相当于:
Ifa=1Then
a=2
Else
a=3
EndIf
可以这样写4层嵌套IIF函数表达式:
iif(isnull(BSS项目编号) and isnull(固网项目编码),"BSS和固网项目均为空",iif(isnull(BSS项目编号) and not isnull(固网项目编码),"新建工程无BSS号",iif(not isnull(BSS项目编号) and isnull(固网项目编码),"开户无BSS编号",iif(BSS项目编号=固网项目编码,"匹配成功","项目乱挂"))))
写成SQL查询语句:
select BSS项目编号,固网项目编码,iif(isnull(BSS项目编号) and isnull(固网项目编码),'BSS和固网项目均为空',
iif(isnull(BSS项目编号) and not isnull(固网项目编码),'新建工程无BSS号',
iif(not isnull(BSS项目编号) and isnull(固网项目编码),'开户无BSS编号',
iif(BSS项目编号=固网项目编码,'匹配成功','项目乱挂'))))
as 项目使用情况 from 表名
特别提示:
楼主要求[固网项目编码]的值为空那么输出的值为“开户无BSS编号”,我觉得似乎不太准确,判断为“无固网项目编码”也许更准确;
另外还存在[BSS项目编号]和[固网项目编码]两项同时为空的情况,提问里并未提及,但是表达式必须考虑这种情况存在的可能,因此我在上述表达式里也做了相应判断。
SELECT CASE LEN([Name]) WHEN 2 THEN LEFT([Name],1)+' '+RIGHT([Name],1) ELSE [Name] END AS BName,CASE LEN(fqName) WHEN 2 THEN LEFT(fqName,1)+' '+RIGHT(fqName,1) ELSE fqName END AS fqBName,
CASE LEN(mqName) WHEN 2 THEN LEFT(mqName,1)+' '+RIGHT(mqName,1) ELSE mqName END AS mqBName FROM db_2011
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)