关于VFP字符的比较

想知道下面几个怎么比较?
“111”和“11Y”
“你好”和“您好”
还有排序序列具体含义是指什么?为什么“abc”>“ab”显示结果为.T.?

   字符串的比较是自左向右逐个比较,一旦发现两个对应字符不同,就根据这两个字符确定排序先后。通常是按ASCII码值,即按Machine(机器)排序。次序依次是:空格<数字<大写字母<小写字母<汉字,一级汉字的顺序与拼音同。也可选择PinYin(拼音)序列,西文次序是:空格<数字<小写字母<大写字母。还可选择Stroke(笔画)序列。
  对"111”和"11Y”来说,两者的第1个字符都是"1”;比较第2个,两者的第2个字符都是"1”,再比较第3个,前者的第3个字符是"1”,数字类,后者的第3个字符是"Y”,大写字母类,因为数字<大写字母,所以"111”<"11Y”。
  对"你好"和"您好"来说,两者的第1个字符都是一级汉字,顺序与拼音同,"你"的拼音为"ni",,"您"的拼音为"nin",因为"ni”<"nin”,所以"你好"<"您好"。
对于"abc”和"ab”,两者前两个字符都是"ab”,相同。前面第3个字符是"c",后面第3个字符不存在,为空,空的ASCII码为0,"c"的ASCII码为99,99>0,"abc">"ab",所以命令 ? "abc">"ab"的显示结果是.T.(真)。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-01-27
在VFP中,比较字符串“ABC”与“abc”的大小是有前提条件的,就是要知道数据是按什么进行排序,才能知道谁大谁小。
VFP有按拼音(pinyin) 排序比较大小、按ASCII码(MACHINE)比较大小和按笔划顺序(STROKE)比较大小3种。
VFP的默认设置是按拼音(pinyin) 排序比较大小,此时是“ABC”>“abc”;
若按ASCII码(MACHINE)比较大小,则是“ABC”<“abc”。

选择数据按什么进行排序,在VFP菜单的“工具”——“选项”——“数据”——"排序序列"里中可以选择(pinyin、MACHINE、STROKE)。

两种比较大小的程序如下:
SET COLLATE TO "pinyin" &&设置VFP按拼音(pinyin) 排序
? "ABC"<"abc" &&结果为F 即"ABC">"abc"

SET COLLATE TO "MACHINE" &&设置VFP按ASCII码(MACHINE)排序
? "ABC"<"abc" &&结果为T 即"ABC"<"abc"本回答被网友采纳
第2个回答  2019-02-14
VFP里面的字符串比较不一样,不是按照ASCII码比较,是他自己规定的。
相似回答