| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4606 人关注过本帖
标题:模糊更新。update 命令时使用模糊条件。
只看楼主 加入收藏
hyz00001
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:168
专家分:137
注 册:2012-10-5
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:11 
模糊更新。update 命令时使用模糊条件。
模糊更新
 
vou.zip (1.06 KB)

现在有表1:x数据如下:
amt                key                                            CC
0    差旅费(总) ([102.02]集团研究院总办/[106]人工费)
0    差旅费(总) ([106.04]研发中心总办/[105]材料费)


表2:y 数据如下:
dept
[102.02]集团研究院总办
[106.04]研发中心总办


需要更新表1:x的cc字段。更新后的结果如下:

amt                    key                                        CC
0        差旅费(总) ([102.02]集团研究院总办/[106]人工费)        [102.02]集团研究院总办
0        差旅费(总) ([106.04]研发中心总办/[105]材料费)          [106.04]研发中心总办




我自己编写的vfp更新代码如下:

update x from y set x.cc =y.dept where x.key =y.dept
还尝试了以下代码都不成功。
update x from y set x.cc =y.dept where x.key ='*'- y.dept -'*'
update x from y set x.cc =y.dept where x.key ='*'- trim(y.dept) -'*'

感谢各位的回答,这个摘要的内容还比较复杂,它有可能包含两个核算项目代码。现在已经修改例子。




感谢版主,太棒了,非常完美的解决问题。代码如下:

UPDATE vo from 部门 SET vo.部门=部门.key WHERE ALLTRIM(部门.key)$ALLTRIM(vo.科目名称)



分析存在的问题是字段后面会有空白数据,直接用$无法正确得到结果。添加上alltrim   可以完美避开这个问题。再次感谢版主。

[此贴子已经被作者于2018-5-18 14:41编辑过]

搜索更多相关主题的帖子: 模糊 更新 update key 代码 
2018-05-18 11:41
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
多表关联格式,VFP9.0可以,但VFP6.0就不知道了.
update a1 set a1.字段1=b1.字段1 from 表1 as a1,表2 as b1 where a1.字段2=b1.字段2 &&关联条件

*还有1种
update a1 set a1.字段1=b1.字段1 from 表1 as a1 ;
inner join 表2 as b1 on a1.字段2=b1.字段2 ; &&关联条件
where a1.字段3="其他条件"  &&其他条件


[此贴子已经被作者于2018-5-18 12:04编辑过]

收到的鲜花
  • hyz000012018-05-18 12:09 送鲜花  1朵   附言:感谢您的回答,还请协助。
2018-05-18 11:58
hyz00001
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:168
专家分:137
注 册:2012-10-5
收藏
得分:0 
以下是引用mywisdom88在2018-5-18 11:58:26的发言:

多表关联格式,VFP9.0可以,但VFP6.0就不知道了.
update a1 set a1.字段1=b1.字段1 from 表1 as a1,表2 as b1 where a1.字段2=b1.字段2 &&关联条件

*还有1种
update a1 set a1.字段1=b1.字段1 from 表1 as a1 ;
inner join 表2 as b1 on a1.字段2=b1.字段2 ; &&关联条件
where a1.字段3="其他条件"  &&其他条件



感谢你的回答,我根据你的答复修改了代码如下:

UPDATE vo SET vo.部门=部门.key from vo,部门 WHERE vo.科目名称=部门.key

代码能运行,但是更新的数据还是0.

第二种方法也恩呢该正常运行,但是修改的数据位0

UPDATE vo SET vo.部门=部门.key from vo inner join 部门 on vo.科目名称=部门.key

这个地方属于一个模糊匹配的过程,直接用等于号应该不行。


我刚才自己拿具体数据做测试。
? '[102.02]集团研究院总办'$'差旅费(总) ([102.02]集团研究院总办)'
这样一条一条的数据使用$包含于是可以的。

但是到了字段多数据模糊匹配更新就不行了。
UPDATE vo from 部门 SET vo.部门=部门.key WHERE 部门.key $ vo.科目名称


[此贴子已经被作者于2018-5-18 12:09编辑过]

2018-05-18 12:05
jichabc
Rank: 2
等 级:论坛游民
威 望:2
帖 子:26
专家分:36
注 册:2011-3-30
收藏
得分:0 
你无非是想把()去掉吧
2018-05-18 12:50
jichabc
Rank: 2
等 级:论坛游民
威 望:2
帖 子:26
专家分:36
注 册:2011-3-30
收藏
得分:0 
即用去比较然后还要替换你要加入个第三方才行。你的想法很好但计算机逻辑成了死循环它才能返回0个
2018-05-18 12:54
jichabc
Rank: 2
等 级:论坛游民
威 望:2
帖 子:26
专家分:36
注 册:2011-3-30
收藏
得分:0 
REPL ALL CC WITH SUBSTR(ALLTRIM(KEY),2,LEN(ALLTRIM(KEY))-1))
2018-05-18 13:01
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
你这样看看能不能查询到数据出来,如果能查询到数据,就表示,关联正常的,有结果的
select v.*,b.* from vo as v,部门 as b where v.科目名称=b.Key

收到的鲜花
  • hyz000012018-05-18 14:22 送鲜花  1朵   附言:感谢回答,有可能会有两个核算项
2018-05-18 13:37
hyz00001
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:168
专家分:137
注 册:2012-10-5
收藏
得分:0 
以下是引用mywisdom88在2018-5-18 13:37:34的发言:

你这样看看能不能查询到数据出来,如果能查询到数据,就表示,关联正常的,有结果的
select v.*,b.* from vo as v,部门 as b where v.科目名称=b.Key



感谢你的答复,这个还是不行。以下是我编的代码,运行查询后 部门信息一个都没带出来。

SELECT * FROM vo LEFT JOIN 部门 on vo.科目名称=部门.key

2018-05-18 14:09
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
刚才看了你表数据,2个关联的字段内容不相同,好像相差(),那就这样
update x set x.cc=allt(y.dept) from 表1 as x,表2 as y where allt(x.key)="("+allt(y.dept)+")"
或者,VFP的SQL语法
update x set x.cc=allt(y.dept) from 表1 as x,表2 as y where allt(y.dept) $ allt(x.key) &&但这样,就不只是相差()了,如 "1234" $ "a1234b" 等格式的都成立


[此贴子已经被作者于2018-5-18 14:29编辑过]

2018-05-18 14:15
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:20 
以下是引用hyz00001在2018-5-18 12:05:31的发言:
但是到了字段多数据模糊匹配更新就不行了。
UPDATE vo from 部门 SET vo.部门=部门.key WHERE 部门.key $ vo.科目名称

cSearchFor $ cSearchIn
你的语法好像错了,要这样的格式 "1234" $ "x1234y" 才是正确的.
2018-05-18 14:35
快速回复:模糊更新。update 命令时使用模糊条件。
数据加载中...
 
   



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

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