1、全国计算机等级考试(二级 Visual FoxPro) 变量、表达式、函数-14 第二部分 变量、表达式及函数一、 常量与变量:1.1 常量:1数值型常量:.由 09、小数点、正负号构成;.对于很大的数据一般采用科学记数法形式书写,如:5.12E12(表示 5.121012)、5.12E-12(表示 5.1210-12);.在内存中占 8 个字节。2货币型常量:.由前置符号“$”开始,如:$1234.12;.默认采用 4 位小数,如果多余 4 位小数,则对多余的位数进行四舍五入;.不能采用科学记数法表示,在内存中占 8 个字节。3字符型常数(字符串):.用单引号、双引号、方括号定界,如:abc
2、d 、 ”abcd”、abcd; &注意:定界符成对出现.定界符不能交叉,如:abcd ”、 ”abcd都是错误的;.不包含任何字符的字符串(“” )叫空串,空串与包含空格的字符串(“ ” )不同。4日期型常量:.用大括号(花括号)定界,如:10/08/01;.分隔符可以用斜杠(/) 、连字号(-) 、句点(.) 、空格;.日期型常量分为:传统日期格式与严格日期格式。 传统日期格式:(用 SET STRICTDATE TO 0 设置)月、日用 2 位数字表示;年可用 2 位,也可以用 4 位。 严格日期格式:(默认,用 SET STRICTDATE TO 1|2设置)yyyy-mm-dd;书写
3、时大括号内的第一个字符必须是脱字符() ;年必须用 4 位数;年月日的次序不能颠倒、不能缺省;用 8 个字节表示。5日期时间型常量:.包括日期与时间两个部分,如:2006-03-08,06:30P.用 8 个字节表示;6逻辑常量:.用两个(.)定界,如.T.、.Y. ;.逻辑型常量取值有:.T.、.t.、.F. 、.f.、.Y.、.y.、.N. 、 .n.;.逻辑型常量只占一个字节。1.2 变量:1字段变量:.字段变量数据类型; 字符型:用 C 表示,长度不能超过 254 个字节;全国计算机等级考试(二级 Visual FoxPro) 变量、表达式、函数-15 数值型:用 N 表示,长度不超过
4、 20 位(其中小数最大为 19 位) ; 货币型:用 Y 表示,固定长度为 8 字节; 日期型:用 D 表示,固定长度为 8 字节; 日期时间型:用 T 表示,固定长度为 8 字节; 逻辑型,用 L 表示,固定长度为 1 字节; 浮点型:用 F 表示,长度不超过 20 位(其中小数最大为 19 位) ; 整型:用 I 表示,固定长度为 4 字节; 双精度型:用 B 表示,固定长度为 8 字节; 备注型:用 M 表示,固定长度为 4 字节。 通用型:用 G 表示,固定长度为 4 字节。.字段变量名可以为汉字;.字段变量优先于内存变量。2内存变量:.内存变量的数据类型; 字符型:用 C 表示;
5、数值型:用 N 表示; 货币型:用 Y 表示; 日期型:用 D 表示; 日期时间型:用 T 表示; 逻辑型,用 L 表示;.内存变量名可以为汉字;.访问内存变量可以用 M.(或 M-)。3内存变量的类型: .简单内存变量: 简单内存变量不需要先定义,可通过重新给变量赋值来改变变量的类型; 可用下面两种方式赋值:=STORE TO .数组: 数组使用之前必须定义;定义格式:DIMENSION (,),DECLARE (,), 默认数组的类型是逻辑型; 数组的最大维数为二维 在数组赋值和输入语句中使用数组名时,表示将同一个值同时赋给该数组的所有数组元数; 数组名不能与简单变量同名; 可用一维数组的
6、形式访问二维数组。例:Dime aa(10),bb(5,2)1.3 内存变量常用命令:.内存变量赋值:= A=100STORE TO STORE 100 TO A1,A2,A3,A4STORE A1+100 TO A2,A3全国计算机等级考试(二级 Visual FoxPro) 变量、表达式、函数-16 .表达式值的显示:格式 1:?格式 2:? .内存变量显示。格式 1:LIST MEMORY格式 2:DISPLAY MEMORY.内存变量删除。格式 1:CLEAR MEMORY格式 2:RELEASE 二、 表达式:1数值表达式:+、-、*、/、%、*、( ).算术运算优先级:.求余运算:
7、求余运算:%取余函数:MOD()余数的正负号与除数一致;余数的绝对值小于除数的绝对值;*例:? 5%4 -5%4 5%-4 -5%-41 3 -3 -12字符表达式:.运算符:+、-+ 两个字符串首尾连接,如:例: a=”abcd_”b=”1234”? a+babcd 1234- 连接前后两个字符串,并将前字符串的尾部空格移到合并后的新字符串尾部,如:例: a=”abcd ”b=”1234”? a-babcd1234.字符串表达式中的每一个项都必须是字符型。3日期时间表达式:+、-格式 结果及类型+ 不能相加- 两日期相隔天数+ 日期型。某日期后若干天的日期- 日期型。某日期前若干天的日期+
8、日期时间型。某时间后若干秒的时间- 日期时间型。某时间前若干秒的时间+ 不能相加- 两时间相差秒数全国计算机等级考试(二级 Visual FoxPro) 变量、表达式、函数-17 4关系表达式: 运算符 说明 运算符 说明 大于 = 大于等于= 等于 = 字符串精确比较#、字符串运算符日期时间运算符关系运算符逻辑运算符 算术运算:乘方 乘、除、求余 加、减例如:? (1+2(1+2)/(2+2)2.25 字符运算:加、减优先级相同 日期运算:加、减优先级相同 关系运算:大于、小于、大于等于、小于等于、不等、等于优先级相同 逻辑运算:OR 2 AND “人“ “人民“ OR .T. ) 参数类型
9、:N 函数值类型:N作用:求的绝对值例题:? ABS(12), ABS(-12)12 122平方根函数:格式:SQRT() 参数类型:N 函数值类型: N作用:求的平方根说明:数值表达式不能为负数3求整数函数:格式:INT() 参数类型:N 函数值类型:N作用:返回整数部分(截尾取整)说明:将一个数的整数部分取出来,不管小数部分例题:? Int(9.99999)94四舍五入函数:格式:ROUND(,) 参数类型:N 函数值类型:N作用:返回在处四舍五入结果说明:若大于等于 0,则表示要保留几位小数,否则为整数部分的舍入位数例题:? Round(12.567,2), Round(12.567,1
10、), Round(12.567,0), Round(12.567,-1)12.57 12.6 13 105求余数函数:格式:MOD(,) 参数类型:N 函数值类型:N作用:返回除以的余数说明: 函数值的正负符号与相同; 转换时根据需要自动进行四舍五入; 如果两数同号,则函数值等于两数相除的余数; 如果两数异号,则函数值等于两数相除的余数再加上的值。例题:?MOD(10,3) ,MOD(10,-3) ,MOD(-10,3) ,MOD(-10,-3)1 -2 2 -16求最大值函数:格式:MAX (, ,) 参数类型:C/N/Y/B/F/D/T函数值类型:C/N/Y/B/F/D/T作用:求各表达式
11、中最大值。说明: 表达式可以是:字符型、数值型、货币型、双精度型、浮点型、日期型、日期时间型;全国计算机等级考试(二级 Visual FoxPro) 变量、表达式、函数-19 所有表达式的类型必须相同。例题:? Max(12,15.5,4.23),Max(“abc“, “ab“),Max(“2“,“12“,“05“),Max(“汽车“,“飞机“,“轮船“)15.5 abc 2 汽车7求最小值函数:格式:MIN (, ,) 参数类型: N 函数值类型:N作用:求各表达式中最小值。说明: 表达式可以是:字符型、数值型、货币型、双精度型、浮点型、日期型、日期时间型; 所有表达式的类型必须相同。3.2
12、 字符函数:1字符串长度函数:格式:LEN() 参数类型:C 函数值类型:N作用:求的字符长度(字符数)说明:空字符串的长度为 0例题:x=“中文 Visual FoxPro6.0“? Len(x)202大小写转换函数:格式:UPPER() 参数类型:C 函数值类型:C作用:将中的小写字符变为大写字符说明:其它字符不变例题:? Upper(“中文 Visual FoxPro6.0“)中文 VISUL FOXPRO6.0格式:LOWER() 参数类型:C 函数值类型: C作用:将中的大写字符变为小写字符说明:其它字符不变3空格字符串生成函数:格式:SPACE() 参数类型:N 函数值类型:C作用
13、:返回指定数目的空格说明:空格数与的值相同4删除前后空格函数:格式:TRIM() 参数类型:C 函数值类型:C作用:去掉尾部空格说明:其他空格保留(不去除)例题:? “abc “+“123“,Trim(“abc “)+“123“abc 123 abc123格式:RTRIM() 参数类型:C 函数值类型:C作用:去掉尾部空格说明:其他空格保留(不去除)格式:LTRIM() 参数类型:C 函数值类型:C作用:去掉前导部空格说明:其他空格保留(不去除)格式:ALLTRIM() 参数类型:C 函数值类型:C全国计算机等级考试(二级 Visual FoxPro) 变量、表达式、函数-20 作用:去掉前导
14、空格和尾部空格说明:中间空格保留(不去除)5取子串函数:格式:LEFT (,) 参数类型:C 函数值类型:C作用:从左边取若干字符说明:如果字符数目小于时,则取出所有字符例题:? Left(“中文 Visual FoxPro6.0“,4)中文格式:RIGHT(,) 参数类型: C 函数值类型:C作用:从右边取若干字符说明:如果字符数目小于时,则取出所有字符例题:? Right(“中文 Visual FoxPro6.0“,4)O6.0格式:SUBSTR (, ,) 参数类型:C 函数值类型:C作用:从中某位置开始取若干字符说明:若缺省参数,则取到末尾例题:? Left(“中文 Visual Fo
15、xPro6.0“,5,6)Visual6求子串位置函数:格式:AT(, ) 参数类型:C 函数值类型:N作用:返回的首字符在中的位置说明: 若没有包含在中,则函数值为 0; “字符表达式”区分大小写例题:? AT(“ab“,“asabhjabh“), AT(“AB“,“asabhjabh“)3 07子串替换函数:格式:STUFF(,)参数类型:C 函数值类型:C作用:用替换中从开始的若干字符,替换的字符数由给出说明:若为 0,则将插入到中处。例题:? Stuff(“中文 Visual FoxPro6.0“,5,13, “Turbo“)中文 Turbo6.08字符串匹配函数:格式:LIKE(,)
16、 参数类型:C 函数值类型:.T./.F.作用:比较两个字符串对应位置上的字符,若所有对应字符都匹配,函数返回逻辑真,否则返回逻辑假说明:中可以包含通配符*和?。例题:? Like(“ab?“,“abc“).T.3.3 日期时间函数:1系统日期、时间函数:格式:DATE() 参数类型:无 函数值类型:D作用:获取系统当前日期全国计算机等级考试(二级 Visual FoxPro) 变量、表达式、函数-21 例题:? Date()10/12/07格式:TIME() 参数类型:无 函数值类型:C作用:获取系统当前时间例题:?Time()12:13:16格式:DATETIME () 参数类型:无 函数
17、值类型:T作用:获取系统当前日期与时间例题:? Datetime()10/12/07 12:13:45 PM2求年份、月份、天数函数:格式:YEAR(|) 参数类型:D/T 函数值类型:N作用:从指定的或获取年份例题:? Year(2007.12.11)-12006格式:MONTH(|) 参数类型:D/T 函数值类型:N作用:从指定的或获取月份例题:? Month(2007.12.11)12格式:DAY(|) 参数类型:D/T 函数值类型:N作用:从指定的或式获取天例题:? Day(2007.12.11)113时、分、秒函数:格式:HOUR() 参数类型:T 函数值类型:N作用:从指定的获取小
18、时部分说明:函数值为 24 小时制格式:MINUTE() 参数类型:T 函数值类型:N作用:从指定的获取分钟部分格式:SEC () 参数类型:T 函数值类型:N作用:从指定的获取秒数部分3.4 数据类型转换函数:1数值转换成字符串函数:格式:STR (,) 参数类型:N 函数值类型:C作用:将的值转换成字符型数据说明: 转换时根据需要自动进行四舍五入; 返回字符串的理想长度 L =值的整数部分位数+1(小数点); 如果大于 L,则字符串加前导空格以满足规定的要求; 如果值大于等于值的整数部分位数(包括负号)但又小于 L,则优先满足整数部分而自动调整小数位数; 如果值小于值的整数部分位数,则返回
19、相应数量的星号(*) 。例题:? Str(123.456,6,2), Str(123.456,5,2), Str(123.456,4,2), Str(123.456,2,2)全国计算机等级考试(二级 Visual FoxPro) 变量、表达式、函数-22 123.46 123.5 123 *2字符串转换成数值函数:格式:VAL(字符表达式) 参数类型:C 函数值类型:N作用:将的值转换成数值型数据说明: 如果字符串内出现非数字字符,则只转换前面部分; 若的首字符不是数字符号,则返回数值零,但忽略前导空格。例题:? Val(“123.4“),Val(“123abd34“),Val(“中国“)12
20、3.40 123.00 0.003字符串转换成日期或日期时间函数:格式:CTOD(字符表达式) 参数类型:C 函数值类型:D作用:将的值转换成日期型数据说明: “字符表达式”必须是日期格式,如:“12.21.07“; 如果“字符表达式”的格式不符合日期格式,将转换出空日期。例题:? Ctod(“12.21.07“),Ctod(“13.21.07“)12/21/07 / /格式:CTOT(字符表达式) 参数类型:C 函数值类型: T作用:将的值转换成日期时间型数据4日期或时间转换成字符串函数:格式:DTOC(日期表达式|日期时间表达式,1) 参数类型:D 函数值类型:C作用:将或的值转换成字符型
21、数据例题:下列程序执行后的输出结果为:a=2007.12.31? Dtoc(A)A.12/31/07 B.2007/12/31 C.31/12/07 D.12.31.07格式:TTOC(日期时间表达式,1) 参数类型:T 函数值类型:C作用:将的值转换成字符型数据5宏替换函数:格式: &. : 参数类型:C 函数值类型:C/N/D/T作用:替换出的内容,即&的值是变量中的字符串。说明: 如果该函数与其后的字符无明确分界,则要用“.”作函数结束标识。 宏替换可以嵌套使用。例题 1:A=123B=“A“? &A123例题 2:DB = “职工“USE &DBXM = “姓名“?&XM - “你好!
22、“全国计算机等级考试(二级 Visual FoxPro) 变量、表达式、函数-23 李小明你好!SKIP? XM,&XM ? xm,姓名姓名 李新3.5 测试函数:1空值(NULL 值)测试函数:格式:ISNULL() 参数类型:C/N/Y/F/I/B/D/T/L/M函数值类型:.T./.F.作用:若的值为 null 则返回.T.,否则返回.F.说明:此函数如果用于检测其它非 null 数据,将全部返回.F.例题:? isnull(.null.),isnull(12),isnull(“).T. .F. .F.2“空”值测试函数:格式:EMPTY() 参数类型:C/N/Y/F/I/B/D/T/L
23、/M函数值类型:.T./.F.作用:若的值为“空”则返回.T.,否则返回.F.数据类型 “空”值 数据类型 “空”值数值型 0 双精度型 0字符型 空串、空格、制表符、回车、换 行 日期型 空(如 CTOD(“))货币型 0 日期时间型 空(如 CTOT(“))浮点型 0 逻辑型 .F.整型 0 备注字段 空(无内容)例题:? Empty(“), Empty(“ “), Empty(“12“), Empty(0), Empty(.F.).T. .T. .F. .T. .T.3数据类型测试函数:格式:VARTYPE(,) 参数类型:C/N/Y/L/O/G/D/T/X/U函数值类型:C/N/Y/L
24、/O/G/D/T/X/U作用:返回的数据类型返回的字母 数据类型 返回的字母 数据类型C 字符型或备注型 G 通用型N 数值型、整型、浮点型、双精度型 D 日期型Y 货币型 T 日期时间型L 逻辑型 X Null 值O 对象型 U 未定义说明:注意与 TYPE()的区别格式:TYPE(“) 参数类型: 函数值类型:作用:返回的值的数据类型说明:括号中的引号(“ “)不能少例题:A=123? TYPE(“A“)N全国计算机等级考试(二级 Visual FoxPro) 变量、表达式、函数-24 4表文件尾测试函数:格式:EOF(|) 参数类型: N/C 函数值类型:.T./.F.作用:测试当前工作
25、区或|工作区数据表文件指针是否指向文件尾说明:若指向文件尾返回.T.,否则返回.F.5表文件首测试函数:格式:BOF(|) 参数类型: N/C 函数值类型:.T./.F.作用:测试当前工作区或|工作区数据表文件指针是否指向文件首说明:若指向文件首返回.T.,否则返回.F.6记录号测试函数:格式:RECNO(|) 参数类型:N/C 函数值类型:N作用:返回当前工作区或|工作区数据表文件指针指向的记录号说明: 若没有打开表,则返回 0; 若指针指向文件尾,则返回记录数加 1; 若指针指向文件首,则返回第一号记录的记录号7记录个数测试函数:格式:RECCOUNT(|) 参数类型:N/C 函数值类型:N作用:返回当前工作区或|工作区数据表文件记录总数说明:不受删除标记的影响8条件测试函数:格式:IIF(,) 参数类型:C/N/Y/L/D/T/I/F/B函数值类型:C/N/Y/L/D/T/I/F/B作用: 根据的值决定用的值还是的值作为函数返回值说明:若的值为.T.则返回的值,否则返回的值例题:? iif(34,“正确“,“错误“)错误9记录删除测试函数:格式:DELETE(|) 参数类型:N/C 函数值类型:.T./.F.作用:测试当前工作区或|工作区数据表文件当前指针所指向的记录是否有删除标记说明:有删除标记返回.T.,否则返回.F.