| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3622 人关注过本帖
标题:求助,select筛选条件中字段名为变量应该怎么写?
只看楼主 加入收藏
richer3456
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-8-18
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
求助,select筛选条件中字段名为变量应该怎么写?
如题,比如我有一个表zk,表结构:
字段名:M1     M2    M3      M4
记录:  公司1  ab  15110101  123
        公司2  cd  15110105  854
        公司3  ab  15110108  546
        ......
第一步:我想做的是通过记录的内容找出相应字段名,这一步我已经实现,程序如下:
SET EXACT off
USE zk
GO top
cun=AFIELDS(zdm,"zk")
FOR i=1 TO cun
xz="zk."+zdm[i,1]
IF ALLTRIM(&xz.) = "151101"
EXIT
ENDIF
NEXT
运行上述代码没有问题,而且输入?zdm[i,1]可以得到相应字段名是M3

第二步:比如我想用select 查找上一步找出的字段内容为15110108的记录的所有信息,因为我上一步用循环得出的字段名相当于一个变量(zdm[i,1]),那么应该如何写select语句。
select * from zk where ????(条件部分该如何写?
本人新手,还望高人指点

[此贴子已经被作者于2017-8-18 17:14编辑过]

搜索更多相关主题的帖子: select 条件 字段 变量 记录 
2017-08-18 15:46
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:5 
是不是这个意思:
select * from zk where evaluate(zdm[3,1])="15110108"

坚守VFP最后的阵地
2017-08-18 16:23
richer3456
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-8-18
收藏
得分:0 
回复 2楼 sdta
感觉不对,我试了一下,如果输入?EVALUATE(zdm[i,1]),取出来的结果是对应字段的第一条记录,并不是字段名。
然后我试了一下select * from zk where evaluate(zdm[i,1])="15110108" INTO dbf jg   没有查出来,是空表。
不过还是学习了evaluate()这个函数,还是有收获,谢谢!
2017-08-18 17:30
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:5 
以下是引用richer3456在2017-8-18 17:30:36的发言:

感觉不对,我试了一下,如果输入?EVALUATE(zdm),取出来的结果是对应字段的第一条记录,并不是字段名。
然后我试了一下select * from zk where evaluate(zdm)="15110108" INTO dbf jg   没有查出来,是空表。
不过还是学习了evaluate()这个函数,还是有收获,谢谢!

这样试试:
select * from zk where alltrim(evaluate(zdm[i,1]))=="15110108" INTO dbf jg
2017-08-18 19:08
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
以下是引用richer3456在2017-8-18 17:30:36的发言:

感觉不对,我试了一下,如果输入?EVALUATE(zdm),取出来的结果是对应字段的第一条记录,并不是字段名。
然后我试了一下select * from zk where evaluate(zdm)="15110108" INTO dbf jg   没有查出来,是空表。
不过还是学习了evaluate()这个函数,还是有收获,谢谢!


select * from zk where evaluate(zdm[3,1])="15110108"
vfp6.0下通过

坚守VFP最后的阵地
2017-08-18 19:12
taifu945
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:80
帖 子:1545
专家分:3298
注 册:2012-7-6
收藏
得分:10 
不要用EVALUATE()函数,还是直接用宏代换呀:WHERE &Zdm[i,1]="..."。
2017-08-19 14:19
richer3456
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-8-18
收藏
得分:0 
回复 6楼 taifu945
我用的是vf9.0 用宏代换可以解决问题,非常感谢!
2017-08-21 10:28
richer3456
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-8-18
收藏
得分:0 
回复 5楼 sdta
可能是我版本的问题,我的是vf9.0,我用evaluate()这个函数就是查不出来,下载一个6.0版本试一下。非常感谢
2017-08-21 10:37
快速回复:求助,select筛选条件中字段名为变量应该怎么写?
数据加载中...
 
   



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

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