vfp 关于字段比较的奇怪现象

jack_wang0823 2013-06-03 03:20:31
有一个表里面包含一个字段 order_no 字符型 长度为9
记录情况如下

order_no
a001
a001
a001
a001
a001
a001
a001a
a001

现在
的情况是 用过滤命令和loca 命令
aa='a001 '//长度=字段宽度

set filter to order_no<>aa
可以把'a001a'找出来
用allt(order_no)<>allt(aa)

就找不出来了.
不知道大家是否碰到这个现象, 应该如何处理
...全文
147 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
十豆三 2013-06-06
  • 打赏
  • 举报
回复
应该不是 Set Ansi On 的原因,因为这个只对 SQL 语句有效。 你如果确认是 Set Ansi On 的原因,那就还用 Set Ansi Off,然后把你的 SQL 语句改为: sele * from biao1 where !allt(order_no)==allt(aa)
jack_wang0823 2013-06-06
  • 打赏
  • 举报
回复
引用 9 楼 apple_8180 的回复:
Set Ansi On
加入这个命令以后 SQL 通过了 却发现 我建立的数据表的关联却出了问题.. 用 set rela to order_no into xxx xxx 中 显示不出来对应的内容了
十豆三 2013-06-04
  • 打赏
  • 举报
回复
Set Ansi On
jack_wang0823 2013-06-04
  • 打赏
  • 举报
回复
引用 1 楼 apple_8180 的回复:
主程序开头加代码: Set Exact On
加了以后 用set filter to 通过了 用在sql 里还是得不出正确结果 Set Exact On aa="a001" sele * from biao1 where allt(order_no)<>allt(aa) 返回的结果集 为空
jack_wang0823 2013-06-03
  • 打赏
  • 举报
回复
受教了 很基础的东西 不记得了
lygcw9602 2013-06-03
  • 打赏
  • 举报
回复
?[abc]=[ab] ?[abc]==[ab] ?[abc]==[abd] ?[abc]==[abC] ?[abc]=[abC]
lygcw9602 2013-06-03
  • 打赏
  • 举报
回复
关键在于字符比较,是精确比较,还是不精确比较的问题。 如果用精确比较就不会出现楼主所说的问题了,也就是 allt(order_no)==allt(aa) &&如果用"=="比较两个字符串是否相等,就不用考虑Set Exact设置情况了 这也是VFP中字符串比较的关键所在。
十豆三 2013-06-03
  • 打赏
  • 举报
回复
WWWWA 2013-06-03
  • 打赏
  • 举报
回复
Set Exact On or order_no$aa
十豆三 2013-06-03
  • 打赏
  • 举报
回复
当 Set Exact Off 时: ?'a001a'='a001' && 返回.T.,因为比较时,直到等号右边达到结尾就不比较了。 ?'a001'='a001a' && 返回.F. 所以要用 Set Exact On,因为 On 时会在两个表达式的较短的一个的右边加上空格或零(0)字节,以使它与较长表达式的长度相等再比较。
十豆三 2013-06-03
  • 打赏
  • 举报
回复
主程序开头加代码: Set Exact On

2,749

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧