标题:使用iif()的一点困惑
只看楼主
phoenix_leon
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2015-10-30
 问题点数:0 回复次数:6 
使用iif()的一点困惑
在使用select调用iif()发现一个问题,百思不得其解,上来请教大家。
描述如下:
select a.tt01,a.tt02,b.tt03,iif(b.tt03=0,-1,(a.tt01+a.tt02)/(b.tt03/10000)) as tt04 where 条件 form a,b
以上a,b表中调用的字段都是正常的数值型,但在生成的tt04中就会有生成“**”,用modi stru查看临时表结构,发现tt04的结构为N(2,0)所以仅有条件满足b.tt03=0和<>0但(a.tt01+a.tt02)/(b.tt03/10000)的计算结果小于100时才能正常显示,计算结果>=100的都显示“**”。

但如果先通过将(a.tt01+a.tt02)as t1与(b.tt03/10000) as t2生成一个临时表temp,再用一个select iif(b.tt03=0,-1,t1/t2) as tt04 where 条件 from temp,b 则能全部正常计算和显示。

想了半天也不知道问题在哪里

[此贴子已经被作者于2015-11-11 17:23编辑过]

搜索更多相关主题的帖子: where 
2015-11-11 17:20
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
字段不够长度
,可以该为
select a.tt01,a.tt02,b.tt03,iif(b.tt03=0,-000000000000001,(a.tt01+a.tt02)/(b.tt03/10000)) as tt04 where 条件 form a,b
这个的-000000000000001,如果你有小数点的,就-000000000000000000001.00000
打多少个0,就要看你的数据最大是多少
2015-11-11 17:32
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
得分:0 
字段长度不够
2015-11-11 17:46
phoenix_leon
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2015-10-30
得分:0 
谢谢楼上的两位,我也通过修改数据,发现了你们提的思路,但为什么我说的第二种模式就没有这个情况呢,同样是=0显示-1,<>0就可以完整显示计算结果。
2015-11-12 08:22
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:190
帖 子:3125
专家分:8340
注 册:2015-3-25
得分:0 
要有数据,才能找出,什么原因
2015-11-12 09:42
fyyylyl
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:16
帖 子:287
专家分:676
注 册:2006-5-22
得分:0 
数据宽度是按第一条符合条件和记录的宽度吧

[此贴子已经被作者于2015-11-13 16:54编辑过]


2015-11-13 16:51
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:649
专家分:2156
注 册:2014-2-7
得分:0 
这是一个老生常谈的问题。记住:当Select 中的字段出现表达式时,应使用 CAST()函数限定其类型、长度、小数位,如:
select a.tt01,a.tt02,b.tt03,CAST(iif(b.tt03=0,-1,(a.tt01+a.tt02)/(b.tt03/10000)) as N(12,2)) as tt04 where 条件 form a,b

注:该方法适用于 VFP 9.0,不要跟我说你还在使用 VFP 6.0

泉城飞狐
2015-11-20 08:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-459100-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.376050 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved