| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1337 人关注过本帖, 1 人收藏
标题:请教各位老师:如何对‘字段A+字段B+字段C’进行查重啊?
只看楼主 加入收藏
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
见下面

[ 本帖最后由 sdta 于 2012-2-9 01:18 编辑 ]

坚守VFP最后的阵地
2012-02-08 20:40
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
以下是引用lasanding在2012-2-8 13:21:08的发言:

请教各位老师:如何对‘字段A+字段B+字段C’进行查重啊?
USE TABLE
FOR I=1 TO RECCOUNT()
    GO I
    OLDRECN=I
    A1=A
    B1=B
    C1=C
    ** 上述三个字段,如有字符型数据,要用ALLTRIM()处理
  COUNT REST TO X FOR (A==A1 AND B==B1 AND C==C1) AND DELETE()=.F.
    IF X>1
     DELETE FOR A==A1 AND B==B1 AND C==C1
     BROWSE FOR A==A1 AND B==B1 AND C==C1
    ENDIF
    I=OLDRECN
ENDFOR
** RECALL ALL

[ 本帖最后由 sdta 于 2012-2-9 01:21 编辑 ]

坚守VFP最后的阵地
2012-02-09 01:17
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
不如用如下數據測試吧:
張三,國務院,北京
李四,人大,上海
王五,國務院,北京
李四,人大,上海
何六,人大,上海
張三,國務院,北京

以上是計算機可以簡單處理的,有時可能是這樣:
張三,國務院,北京
李 四,人大,上海
王五,國務院,北京
李四,人大,上海
何六,人大,上海
張三,國務院,北京市

現實中更古怪的都有,第二種還算好的,最離譜的是名字不同但其實也是同一個東西的,比如杭州的千島湖,跟淳安縣其實是同一個地方。

[ 本帖最后由 TonyDeng 于 2012-2-9 01:38 编辑 ]

授人以渔,不授人以鱼。
2012-02-09 01:23
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
上面的代码测试过了,一切正常。另外%的问题,你看下我回的贴。北京和北京市,如果字符比较的话应该是.F.,这都是不规范输入造成的。

[ 本帖最后由 sdta 于 2012-2-9 01:45 编辑 ]

坚守VFP最后的阵地
2012-02-09 01:42
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
你那代碼把第二種情況的李四也查出來了?把結果黏貼出來看看。

授人以渔,不授人以鱼。
2012-02-09 01:46
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
回复 14楼 sdta
手打的,你怎麼可能保證輸入規範。規範的輸入只能是用代碼或者用勾選,不讓他打字。

授人以渔,不授人以鱼。
2012-02-09 01:48
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
以下是引用TonyDeng在2012-2-9 01:48:16的发言:

手打的,你怎麼可能保證輸入規範。規範的輸入只能是用代碼或者用勾選,不讓他打字。
这就是问题的所在,同时也能看出设计人员的水平了。

坚守VFP最后的阵地
2012-02-09 01:51
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
所以我說現實沒有這樣簡單就是這個原因了。如果全新設計的系統讓操作人員錄入數據,可以避免這種問題,但現實往往是從現有的資料文件中搬移數據的,比如在Excel表格中早有大量相關數據,要移到數據庫系統,就只能寫程序把那些數據抄過來,在這個過程中,如何篩選重複的數據,是真實存在的問題。事實上,我就遇到了,寫了排查程序,但總有漏網的,人工檢查之下,那些原因真是千奇百怪,你想都想不到,程序更不可能全部檢查出來。

授人以渔,不授人以鱼。
2012-02-09 02:02
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9841
专家分:27213
注 册:2012-2-5
收藏
得分:0 
以下是引用TonyDeng在2012-2-9 01:46:24的发言:

你那代碼把第二種情況的李四也查出來了?把結果黏貼出來看看。
这种情况好办,去掉空格就行了。CHRTRAN(XM," ",""),替换空格OK。

坚守VFP最后的阵地
2012-02-09 02:16
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
如果所有可能性都知道當然好辦了,何況,你也只能查"北京"這個串是否在字段中出現,而不能用整個字段去比較"北京",因為像“地址”這樣的字段,不僅僅是省市名那麼簡單的,萬一有個“北京路”,那就被當成“北京”了。

授人以渔,不授人以鱼。
2012-02-09 02:22
快速回复:请教各位老师:如何对‘字段A+字段B+字段C’进行查重啊?
数据加载中...
 
   



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

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