再看BROWSE命令,由于它采用了FoxPro 9.0自身的规则来比较,所以就不同了。FoxPro 9.0对于“=”的自身规则是:首先比较等号两边的字串长度,如果右边的长度小于等于左边,再开始逐位比机内码大小,然后的过程就与SQL命令的一样。若右边长度大于左边长度,直接就判定不等于,而不管它们的前几字节机内码是否相等。各位可以试试:“BROWSE FOR LEFT(姓名,1)=LEFT([州],1)”或“BROWSE FOR LEFT(姓名,1)=[]”,前者一定会出来姓名字段的第一字节机内码是214的所有记录,而后者一定会出来所有记录。原理就是我上面说的,第一条命令等号两边长度相等,第二条命令等号右边长度小于左边的,所以这两条命令有了比较机内码大小的机会。
taifu945:
你说的哪二条命令?
我以下和命令是不是你说的?实验如下:
brow for left(xm,1)=left('州',1),=左,右长度相等,全部记录出来
图片附件: 游客没有浏览图片的权限,请
登录 或
注册
brow for left(xm,1)=left('州',2)=右长度>左长度
图片附件: 游客没有浏览图片的权限,请
登录 或
注册
BROWSE FOR LEFT(xm,1)=[],=左长度>右长度 全部记录出来了
图片附件: 游客没有浏览图片的权限,请
登录 或
注册