| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1911 人关注过本帖
标题:VFP数据对比问题,几乎同样的语句 ,出现了不同的结果(已上次测试数据)
只看楼主 加入收藏
xuminxz
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:41
帖 子:763
专家分:2503
注 册:2011-5-8
收藏
得分:0 
如果要精确比较,where 中的 字符串长度必须与 in 中的长度一致;或者要保证,in中的字符长度不大于 alltrim()后的长度。如果能保证可以转化为整数不溢出,可用val()转化为后比较,也可用以下语句。

SELECT * FROM f1 WHERE lxfs NOT in (SELECT f1.lxfs FROM f1 JOIN y1 ON ALLTRIM(f1.lxfs)==ALLTRIM(y1.lxfs))
数据库中首先要尽可能使数据正确。我以为你的第一个任务是查找无效电话号码。

[此贴子已经被作者于2021-8-21 16:50编辑过]


dBase有人接盘了。
2021-08-21 16:47
hjlali
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2008-12-23
收藏
得分:0 
以下是引用吹水佬在2021-8-21 16:42:42的发言:

“8027878390”与“08027878390”怎比也是.F.

那其他几条记录也应该是.F.啊?为什么唯独只有这一条?这就是我想问的!

喜欢VFP,就要学懂弄通!
2021-08-21 17:08
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9805
专家分:26913
注 册:2012-2-5
收藏
得分:0 
数据规范化是重点

坚守VFP最后的阵地
2021-08-21 17:12
hjlali
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2008-12-23
收藏
得分:0 
以下是引用sdta在2021-8-21 17:12:25的发言:

数据规范化是重点

看了半天,没找出数据哪里有问题啊,难道是我没发现吗?麻烦指出指出,谢谢!

喜欢VFP,就要学懂弄通!
2021-08-21 17:19
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10543
专家分:42958
注 册:2014-5-20
收藏
得分:0 
以下是引用hjlali在2021-8-21 17:08:00的发言:


那其他几条记录也应该是.F.啊?为什么唯独只有这一条?这就是我想问的!

其他的如果不是精确比对就是.T.,参考11楼的意见。
2021-08-21 17:20
hjlali
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2008-12-23
收藏
得分:0 
以下是引用xuminxz在2021-8-21 16:47:21的发言:

如果要精确比较,where 中的 字符串长度必须与 in 中的长度一致;或者要保证,in中的字符长度不大于 alltrim()后的长度。如果能保证可以转化为整数不溢出,可用val()转化为后比较,也可用以下语句。

SELECT * FROM f1 WHERE lxfs NOT in (SELECT f1.lxfs FROM f1 JOIN y1 ON ALLTRIM(f1.lxfs)==ALLTRIM(y1.lxfs))
数据库中首先要尽可能使数据正确。我以为你的第一个任务是查找无效电话号码。

我的主要目的是查找两个表中lxfs字段中不相同的记录。按你的说法,这个比较结果不同的记录不应该只有一条啊?

喜欢VFP,就要学懂弄通!
2021-08-21 17:37
hjlali
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2008-12-23
收藏
得分:0 
以下是引用吹水佬在2021-8-21 17:20:05的发言:


其他的如果不是精确比对就是.T.,参考11楼的意见。

8027878390和08027878390   是包含关系
17671637和+8617671637     也是包含关系
都是前面字符不同,后面一样,如果是不精准对比,也应该都是.T.  ,我不明白和其他几条记录的差别在哪里?
有点晕

喜欢VFP,就要学懂弄通!
2021-08-21 17:41
hjlali
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2008-12-23
收藏
得分:0 
我怎么还是没有彻底弄懂,是我太笨了吗

喜欢VFP,就要学懂弄通!
2021-08-21 18:22
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9805
专家分:26913
注 册:2012-2-5
收藏
得分:0 
看下帮助文件中
SET ANSI 命令
SET EXACT 命令
select - sql 命令(VFP6、VFP9)
关于字符串比较的详细解释

坚守VFP最后的阵地
2021-08-21 19:09
hjlali
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2008-12-23
收藏
得分:0 
以下是引用sdta在2021-8-21 19:09:54的发言:

看下帮助文件中
SET ANSI 命令
SET EXACT 命令
select - sql 命令(VFP6、VFP9)
关于字符串比较的详细解释

这个我慢慢去学习,现在我就是想弄明白下:
执行这个条语句后
SELECT * from f1 where ALLTRIM(lxfs) NOT in  (SELECT lxfs from y1)
为什么只筛选出了一条记录,区别在哪里?
8027878390和08027878390   是包含关系
17671637和+8617671637     也是包含关系
为什么8027878390找出来了,而17671637没找出来呢?

喜欢VFP,就要学懂弄通!
2021-08-21 19:13
快速回复:VFP数据对比问题,几乎同样的语句 ,出现了不同的结果(已上次测试数据 ...
数据加载中...
 
   



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

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