关于VFP中的几条命令

我教VFP,但是有几条命令搞得我比较头晕,请高手们帮忙解答。

1.显示姓名中含“张”的记录。

命令:Display all for "张"$姓名

2.显示姓名中姓为“张”的记录。

命令:Display all for 姓名="张"

3.将姓为“张”的记录复制到NEW.dbf中。

命令:Copy all for "张"=Substr(姓名,1,2)

请问:(1)以上三条命令是否正确?

(2)姓名="张"、姓名="张%"、姓名="%张%"、姓名="张?"、"张"$姓名、"张"=Substr(姓名,1,2)各在什么时候用?

(3)同样是姓张的记录,为何在复制和显示时,for语句的表述方式不同?

谢谢!

我也才开始教这门课程,愿意与你共同学习。

1.显示姓名中含“张”的记录。

Display all for "张"$姓名
或 list for at("张",姓名)<>0

2.显示姓名中姓为“张”的记录。
set exact off
Display all for 姓名="张"
(只有在模糊比较前提下才可以,当然系统默认是off状态)

3.将姓为“张”的记录复制到NEW.dbf中。

Copy all for "张"=Substr(姓名,1,2) to new
(此命令绝对正确,而且等号左右两侧可以交换,与字符串是精确比较还是模糊比较无关,因为是从姓名中取第一个字符与“张”做比较。这样写也正确:
set exact off
copy for 姓名="张" to new )
答案不是唯一的,但必须弄懂区别。

姓名="张"、姓名="张%"、姓名="%张%"、姓名="张?"、"张"$姓名、"张"=Substr(姓名,1,2)各在什么时候用?

姓名="张" 是查找张的记录。(前提是模糊比较状态下)
"张"$姓名 是查找姓名中包含张的记录。
"张"=Substr(姓名,1,2) 查找姓张的记录。(与模糊比较还是精确比较状态无关)

姓名="张%"、姓名="%张%"、姓名="张?“
这三个写法是毫无实际意义的,除非真的姓名字段中有叫"张%"、"%张%、"张?"的。你这样写是三个字符串常量。

因为你不知道的%和_用法。
我不知道条件里还可以有“?” 。

在SQL语言的where <条件>子句中才可以出现%和_,举例:

查询“学籍”表中姓张的记录
select * from 学籍 where 姓名 like "张%"
(这里%的含义代表任意的多个字符)

select * from 学籍 where 姓名 like "张_"
(此命令中的_代表任意的一个字符,也就是说只能找出姓名叫“张某”,名字中两个字的记录。)
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-05-15
命令没有错,但是你没有给出表来,能不能实现就看你的表是什么样的了
相似回答