| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 573 人关注过本帖
标题:求助关于查询后字段长度的问题
只看楼主 加入收藏
dhy793202
Rank: 1
等 级:新手上路
帖 子:29
专家分:4
注 册:2013-3-17
结帖率:75%
收藏
已结贴  问题点数:5 回复次数:6 
求助关于查询后字段长度的问题
我现在有一个表
code1        team1        会议代码
1            A            
2            B            A2
3            C            A3;B3
4            D            A4;B4;C4
5            E            A5;B5;C5;D5
6            F            A6;B6;C6
7            G            A7;B7
8            H            A8     

我现在想查询列出所有有第二个“会议代码”的数据,“会议代码”这里只显示第二个会议代码,然后我用的查询方法是
SELECT T3.code1, T3.team1,;
  IIF(OCCURS(';',T3.会议代码)=1, substr(T3.会议代码,at(';',T3.会议代码,1)+1,len(ALLTRIM(T3.会议代码))-at(';',T3.会议代码,1)),substr(T3.会议代码,at(';',T3.会议代码,1)+1,at(';',T3.会议代码,2)-at(';',T3.会议代码,1)-1)) as 会议代码;
 FROM t3;
 WHERE OCCURS(';',T3.会议代码) > 0


上面T3是这个表的表名,现在的问题是查询结果中“会议代码”只有1位,显示如下
code1        team1        会议代码
3            C            B
4            D            B
5            E            B
6            F            B
7            G            B

需要得到的结果是两个“;”之间的两位
单独在命令行里输入"?IIF(OCCURS(';',T3.会议代码)=1, substr(T3.会议代码,at(';',T3.会议代码,1)+1,len(ALLTRIM(T3.会议代码))-at(';',T3.会议代码,1)),substr(T3.会议代码,at(';',T3.会议代码,1)+1,at(';',T3.会议代码,2)-at(';',T3.会议代码,1)-1))"却能得到某一条的正确值

紧急求教各位大侠,谢谢了!
搜索更多相关主题的帖子: 会议 查询 
2013-03-17 14:54
bccn201203
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:680
专家分:1140
注 册:2012-3-14
收藏
得分:0 
如果是VFP9,看下CAST()的用法,与你的问题有很大的关系。
2013-03-17 15:44
kiff
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:贵宾
威 望:46
帖 子:756
专家分:2531
注 册:2013-1-30
收藏
得分:2 
这是 VFP SELECT 缺陷,特别注意由表达式构成列,当第1条记录刚好不符合条件时,你这构成列的宽度就有问题
IIF(OCCURS(';',T3.会议代码)=1, substr(T3.会议代码,at(';',T3.会议代码,1)+1,len(ALLTRIM(T3.会议代码))-at(';',T3.会议代码,1)),substr(T3.会议代码,at(';',T3.会议代码,1)+1,at(';',T3.会议代码,2)-at(';',T3.会议代码,1)-1))"

改成
IIF(OCCURS(';',T3.会议代码)=1, substr(T3.会议代码,at(';',T3.会议代码,1)+1,len(ALLTRIM(T3.会议代码))-at(';',T3.会议代码,1)),substr(T3.会议代码,at(';',T3.会议代码,1)+1,at(';',T3.会议代码,2)-at(';',T3.会议代码,1)-1),SPACE(20))

不合条件就  SPACE(20)
2013-03-17 15:49
bccn201203
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:3
帖 子:680
专家分:1140
注 册:2012-3-14
收藏
得分:3 
SELECT CODE1,TEAM1,CAST(GETWORDNUM(会议代码,2,[;]) AS C(2)) 会议代码 FROM T3 WHERE OCCURS([;],会议代码)>0
2013-03-17 15:56
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
此事有蹊跷,我改成输出到数组,也只有一个“B”。
2013-03-17 16:03
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:0 
4楼正解。
2013-03-17 16:07
dhy793202
Rank: 1
等 级:新手上路
帖 子:29
专家分:4
注 册:2013-3-17
收藏
得分:0 
3楼这个原因完全正确,我按你说的要求变换完第一条后能正确执行,但是你后面给出的SPACE(20)不太理解,好像不能执行,BTW我学的6.0

4楼这个我装了9.0后运行顺利,GETWORDNUM函数好用,我用的6.0,感觉是弄复杂了
2013-03-17 17:27
快速回复:求助关于查询后字段长度的问题
数据加载中...
 
   



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

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