VFP6.0中,“ABC”竟然大于“abc”?!

来源:百度知道 编辑:UC知道 时间:2024/05/16 05:15:34
【求助】VFP6.0中,“ABC”竟然大于“abc”?!

你可能会笑我在胡说,稍有些编程经验的人都会说,字符串的比较按其ASCII码的大小依次比较,我的VFP6.0教材上也是这么说的。所以明显是"ABC"小于"abc",因为,“a”的ASCII码为97,“A”的ASCII码为65. 可是,你上机试试就会发现:
?"ABC">"abc" 显示为 .T.
我真是百思不得其解,这是为什么呢? 我又试 ? "A">"a", 竟然也是 .T.
而 ? "A">"B"结果为 .F. 这说明按其ASCII码比较大小没错呀。
我又试验: ? "abc">"A" 结果为: .T.
? "abc">"AB" 结果为: .T.
? "abc">"ABC" 结果就变成了: .F.

哪位高手给俺解释一下这是为什么?

是这样的:
foxpro 字符的默认的对比规则是按"pinyin"(拼音)的。在拼音对比中大写的任何一个字母都比小写的大,不信的话 你试一试 ? 'C' > 'a' 答案肯定是 T

要想按ASCII码比较 ,首先输入以下命令(或则在 工具\选项\数据\排序序列里改):
SET COLLATE TO "MACHINE"

这样,“ABC”肯定小于“abc”

其他:

SET COLLATE TO "pinyin" 按拼音排序比较大小

SET COLLATE TO "MACHINE" 按ASCII码比较大小

SET COLLATE TO "STROKE" 设置按笔划顺序比较大小

FOX就是这样规定的

那当然了!这个ABC是大写,这个abc是小写.所以ABC比abc大呀!难道不是吗?