|
本帖最后由 todaynew 于 2011-9-5 14:45 编辑
逻辑值在编程中非常有用,在很多情况下巧妙的利用逻辑值可以简化算法。逻辑值可以是一个逻辑表达式的结果,构造表达式和运用表达式的结果是两个有着密切联系的环节,同时要知道这两个环节各自的侧重面和角度是不同的。如果能经常的从结果的运用来考虑问题,逻辑表达式(包括其他类型的表达式)就可以简化。以下的示例想要说明的上述的问题,希望初学者能从中琢磨出点东西来。
一、利用逻辑值True的特性计算平均值问题:
版友wanghuaiqi1005问题:
查询表中6个字段:S、a、b、c、d、e,S为数量,其它为具体人员。S数量按照比例给人员分配,当其中一个字段为空时,其分配的数量平均分给其它四人。
老汉版主解法:
select *,S/(5+(a is null+b is null+c is null+d is null+e is null)) as 平均值 from tbname
二、利用逻辑表达式排序问题:
版友Lee问题:
在SQL中我已用“ORDER BY 供应商”进行了排序,结果虽然能把名称相同的供应商排列在一起,但我想把所有“XX部”的供应商先排列在一起(例如图中的五金部和注塑部),然后才把其它不是XX部的再进行排序,不知能否这样呢?语句应怎样写?
老汉版主解法:
select * from tbname orDER BY Right(供应商,1)="部",供应商
三、用逻辑表达式的结果得到一个查询字段值
版友徐弈问题:
查询表中qry_tjlygmx,字段pphgr除以字段PPH值大于1为真,反之为假,此条件应该怎么操作,请各位教师指点!!
老汉版主解法:
select *,[pphgr]/[pph]>1 as 判断 from tbname
四、用逻辑值分区域显示记录
版友白桦林问题:
我的ACCESS中有两个结构完全相同的表:表1(未成年)和表2(成年),其中都有字段[出生日期]。如何实现在我打开该数据库时,根据系统日期判断表1中的人是否满18岁;如何满18岁,将表1中的满18岁的人的记录字段复制到表2中,同时删除表1中的该记录。
老汉版主解法:
select *,DateDiff("yyyy",出生日期,Date())=>18 as 成年否 from tbname order By DateDiff("yyyy",出生日期,Date())=>18 |
|