set exact命令对Foxbase数据库记录查找的影响

Author: 广西 高飞 Date: 1996-10-25

        假如我们已建立一个数据库文件student,其结构中包括姓名字段,并且已经输入了一部分记录,假设其中一个记录的姓名字段值为高天飞,并且已经以姓名字段作为关键字段建立了名为na的索引文件。我们现在来用seek命令搜寻一个记录:
        set exact off
        use student index na
        seek "高天"
        display
        此时屏幕上将显示找到了“高天”这个记录,但事实上此数据库中并没有“高天”这个记录。将上面的set exact off语句改为set exact on,则屏幕上显示找不到此记录。比较这两种情况就会发现set exact命令对搜寻的影响:当exact处于缺省值(off)时,seek命令所进行的字符串搜寻是一种“非完全比较”方式的搜寻,两个字符串由左开始字符逐一比较,一直比较到较短字符串的最后一个字符,如果仍与较长字符串的相应字符相同,则视其为“相等”。当exact被设定为on时,则两个字符串的长度及相对应的字符亦必须相同才可视为相等。因此上面例子中exact为off状态时,“高天”是“高天飞”字符串中的两个字符,故屏幕显示找到了记录。而exact设on状态后,则显示找不到记录了。
        exact命令对用locate命令做查寻定位操作时的影响与seek一样,也是分此两种情况。不过,Foxpro为locate命令中的逻辑表达式提供两种等号运算符“=”和“==”。exact命令只对“=”运算符起作用,对运算符“==”没有任何影响,也就是说“==”运算符所进行的字符串比较才是一种真正完全相等的比较。