| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1939 人关注过本帖
标题:字符串比较在问题
只看楼主 加入收藏
大树临风
Rank: 2
等 级:论坛游民
帖 子:132
专家分:14
注 册:2015-12-9
结帖率:75.68%
收藏
已结贴  问题点数:20 回复次数:7 
字符串比较在问题
我的程序上有个list控件,
rowsource="sele distinct 原料危害 from all3 where 项目编号=xmbh.and.alltrim(原料名称)=alltrim(ylmc) .and. len(alltrim(原料危害))>0.and. len(alltrim(原料名称))>0.and.len(alltrim(流程+工序+步骤))=0 into cursor tmpp4list13"

我发现:alltrim(原料名称)=alltrim(ylmc),这样比较的结果是“ab”=“abc”为真了,可是我已经设置SET EXACT ON了,为什么会这样?
搜索更多相关主题的帖子: 字符串 比较 and 名称 步骤 
2018-11-20 22:50
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10608
专家分:43190
注 册:2014-5-20
收藏
得分:0 
完全比较用==号
2018-11-21 04:19
liuxingang28
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:山东济南
等 级:贵宾
威 望:47
帖 子:658
专家分:2180
注 册:2014-2-7
收藏
得分:0 
不可能吧?无论是 Set exact off 还是 set exact on,"ab"="abc"的结果都是 .f.。
当 set exact off时,"abc"="ab"的值为.t.
当 set exact on时,"abc"="ab"的值为.f.

"="号两边的字符串不能颠倒

泉城飞狐
2018-11-21 08:12
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9844
专家分:27213
注 册:2012-2-5
收藏
得分:0 
多看看VFP的帮助文件,就不会犯如此低级的错误。

坚守VFP最后的阵地
2018-11-21 11:55
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:0 
以下是引用liuxingang28在2018-11-21 08:12:35的发言:

不可能吧?无论是 Set exact off 还是 set exact on,"ab"="abc"的结果都是 .f.。
当 set exact off时,"abc"="ab"的值为.t.
当 set exact on时,"abc"="ab"的值为.f.

"="号两边的字符串不能颠倒

对的,"ab"="abc",ab比abc少,所以,这个肯定是 .f.
"abc"="ab",abc中含有ab,这个是.t.
2018-11-21 12:51
csyx
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:火星
等 级:版主
威 望:37
帖 子:708
专家分:2848
注 册:2018-3-13
收藏
得分:20 
确实是低级错误,但很多人都没搞清楚,包括一些号称VFP专家的人。
set exact 是用于 xBase 命令的规则,不适用于 sql 命令,sql 命令比较规则遵循 set ansi 的设置
当比较字符串时:
set ansi off: 这是默认值,仅比较到较短的字符串就结束
set ansi on: 先用空格填充到同样长度,再逐字符比较
所以,你应该 set ansi on 而不是 set exact on

另外,用 == 代替 =,确实也是精确比较,但性质不同,用 set 是改变比较规则,用 == 是改变操作符
== 是vfp的操作符,SQL86/92标准没有定义这种操作符,用 == 是非标的,在vfp中用 == 的好处是它不受 set 设置的影响

[此贴子已经被作者于2018-11-21 16:42编辑过]


这家伙很懒,啥也没留下
2018-11-21 13:31
gs2536785678
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:45
帖 子:610
专家分:1784
注 册:2017-7-16
收藏
得分:0 
有道理!
2018-11-21 14:17
大树临风
Rank: 2
等 级:论坛游民
帖 子:132
专家分:14
注 册:2015-12-9
收藏
得分:0 
回复 6楼 csyx
说的很清楚,非常感谢!
确实,我也怀疑过,set exact on 可能不适用于SQL...
2018-11-21 22:11
快速回复:字符串比较在问题
数据加载中...
 
   



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

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