| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 989 人关注过本帖
标题:使用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
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册: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
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
要有数据,才能找出,什么原因
2015-11-12 09:42
fyyylyl
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:313
专家分:820
注 册:2006-5-22
收藏
得分:0 
数据宽度是按第一条符合条件和记录的宽度吧

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


2015-11-13 16:51
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:658
专家分:2180
注 册: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
快速回复:使用iif()的一点困惑
数据加载中...
 
   



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

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