第3讲表达式函数优秀课件.ppt
第第3讲表达式函数表达式函数第1页,本讲稿共26页类型说明数值型(N)整数或小数。如学生的入学成绩字符型(C)字母、数字和汉字等一切可打印的ASCII字符。如学生姓名日期型(D)由年、月、日构成。如学生的出生年月日期时间型(T)由年、月、日、时、分、秒构成。如学生上课时间逻辑型(L)值为真或假。如是否为党员货币型(Y)货币单位。如商品价格常常量量和和内内存存变变量量的的类类型型双精度型(N)双精度数值,常用于精度要求很高的数据浮点型(N)类似于数值型整数型(N)不含小数点的数值类型。如商品数量通用型(G)OLE对象(存储声音、图像、字处理文档、电子表格等)备注型(M)不定长的字母、数字、文本,用于存放个人简历 数数据据表表的的字字段段类类型型VFPVFP的基本数据类型的基本数据类型常量常量:变量变量:内存变量和字段变量内存变量和字段变量第2页,本讲稿共26页注意:当内存变量与字段变量同名时,直接使用变量名访问,注意:当内存变量与字段变量同名时,直接使用变量名访问,则则系统默认为字段变量系统默认为字段变量。若要访问内存变量,。若要访问内存变量,必须在变量名前必须在变量名前加前缀加前缀M.(或或M-),如:如:M.姓名。姓名。变量变量字段变量、内存变量字段变量、内存变量9假设职员表已在当前工作区打开,其当前记录的假设职员表已在当前工作区打开,其当前记录的“姓名姓名”字段值为字段值为“张三张三”(字(字符型,宽度为符型,宽度为6)。在命令窗口输入并执行如下命令:)。在命令窗口输入并执行如下命令:姓名姓名=姓名姓名-“您好您好”?姓名姓名 那么主窗口中将显示那么主窗口中将显示 A)张三)张三 B)张三)张三 您好您好 C)张三您好)张三您好 D)出错)出错姓名为姓名为字段变量,不能用字段变量,不能用=赋值赋值?M.姓名姓名张三您好张三您好第3页,本讲稿共26页(1)算术运算符算术运算符(2)求余运算求余运算%和函数和函数MOD()作用相同作用相同,结果的正负号与除数一致结果的正负号与除数一致.例例:mod(x,y)一、数值表达式一、数值表达式优先级优先级运算符运算符说明说明1()形成表达式的子表达式形成表达式的子表达式2或或*乘方,如乘方,如34表示表示3*3*3*33*、/、%乘、除、求余乘、除、求余4+、-加、减加、减3符号相同:结果为余数,正负取决于除数符号相同:结果为余数,正负取决于除数符号不同:结果为除数符号不同:结果为除数-余数余数,正负取决于除数正负取决于除数?15%4,15%-4,mod(15,4),mod(15,-4),mod(-15,-4),mod(-15,4)-13-1-31第4页,本讲稿共26页二、字符表达式二、字符表达式+:前后两个字符串首尾连接形成一个新的字符串前后两个字符串首尾连接形成一个新的字符串-:连接两个字符串连接两个字符串,将前串尾部空格移到合并后新串尾部将前串尾部空格移到合并后新串尾部【例例】字符串运算示例(注:字符串运算示例(注:表示空格)表示空格)a=hellob=teacher!?a+b,a-b输出结果:输出结果:helloteacher!helloteacher!第5页,本讲稿共26页三、日期时间表达式三、日期时间表达式 日期加数字(数字加日期)表示在该日期后几天的日期?3+2008/03/01 03/04/08 日期减数字表示在该日期前几天的日期?2008/03/01-2 02/28/08 日期减日期表示两个日期间相差的天数(数值型)(数值型)?2008/03/01-2008/02/05 25日期时间型日期时间型-日期时间型日期时间型结果为秒数结果为秒数日期时间型可以日期时间型可以+或或-秒数秒数日期加日期为非法表达式日期加日期为非法表达式第6页,本讲稿共26页四、关系表达式四、关系表达式关系运算符关系运算符(1)日期、日期时间型比较日期、日期时间型比较:越早的日期或时间越小。:越早的日期或时间越小。(2)逻辑型数据比较:逻辑型数据比较:.T.F.(3)字符串字符串(按机器码按机器码):空格:空格09Aa,Bb,Zz汉字串(汉字按拼音汉字串(汉字按拼音排序)排序),或或或或!,(字符串比较),(字符串比较),(字符串全等比较)(字符串全等比较)第7页,本讲稿共26页设置字符串比较的状态设置字符串比较的状态字符串精确比较字符串精确比较(两边必须完全一样,才相等):1.?abc=abc?abc=ab 字符串模糊比较字符串模糊比较:(两边一样,或右串是左串的左子串,才相等两边一样,或右串是左串的左子串,才相等)默认状态下默认状态下 或或 set exact off?abc=abc?abc=ab?a=abc 2.set exact on?abc=abc?abc=ab.T.F.T.F.T.T.F.第8页,本讲稿共26页(1)ABC$ACB ABC$ABXYCPK AB$CDABEFGH“二级考试二级考试$二级二级 01/05/9812/30/97 .F.F.F.T.T.(2)SET EXACT OFF?ABC高)字符运算符:,日期运算符:,关系运算符:,或或!,(字符串比较),(字符串全等比较)低 逻辑运算符:.OR.AND.NOT.(低-高)第10页,本讲稿共26页2.4 函数函数l lVFPVFP中函数是一种可以运行的特殊运算,并立即给出函数值。中函数是一种可以运行的特殊运算,并立即给出函数值。l l函数的一般形式;函数的一般形式;函数名函数名函数名函数名(自变量表)自变量表)自变量表)自变量表)如开平方如开平方如开平方如开平方?SQRT(123)?SQRT(123)输出结果输出结果输出结果输出结果 11.0911.09l lvfpvfp常用函数常用函数 算术运算函数算术运算函数、字符函数字符函数、日期时间函数日期时间函数 类型转换函数类型转换函数、测试函数测试函数、标识函数标识函数 。第11页,本讲稿共26页1.取绝对值函数取绝对值函数 ABS(N)例?ABS(-123)&1232.指数函数指数函数 EXP(N):求求eX值值 例?EXP(3)&20.093.平方根函数平方根函数SQRT(N)?SQRT(123)&11.09数值函数数值函数 INT():求求N的整数部分的整数部分(不四舍五入不四舍五入)FLOOR():求):求 N的最大整数的最大整数CEILING():求):求 N的最小整数的最小整数N=3.6?int(n),floor(n),ceiling(n)?int(-n),floor(-n),ceiling(-n)3 3 4-3 -4 -34.取整函数取整函数第12页,本讲稿共26页数值函数数值函数5.最大值函数最大值函数 MAX(N1,N2):求两个数字表达式中最大值,求两个数字表达式中最大值,也可以比较字符型或日期型值。也可以比较字符型或日期型值。?max(123,342)?Max(“fish”,”dog”,”cat”)6.最小值函数最小值函数 MIN(N1,N2)求两个数字表达式中最小值,也可以求两个数字表达式中最小值,也可以比较字符型或日期型值。比较字符型或日期型值。?min(123,342)?Max(“fish”,”dog”,”cat”)7.求余数函数求余数函数 MOD(N1,N2)求求n1/n2的余数的余数?MOD(5,3),MOD(-10,3)2 2&342&fish&123&cat第13页,本讲稿共26页数值函数数值函数9.符号函数符号函数SIGN():求:求N的符号的符号?sing(3),sing(0),sing(-3)1 0 -18.舍入函数舍入函数ROUND(N,M)求对保留位小数,舍入求对保留位小数,舍入?ROUND(12.647,2),ROUND(12.647,-1)12.65 10 第14页,本讲稿共26页1.左字符串截取函数左字符串截取函数:left(串串,n)对串从左截取对串从左截取n个字符个字符?Left(“abcdefghij”,4)字符串函数字符串函数2.右字符串截取函数右字符串截取函数:right(串串,n)对串从右截取对串从右截取n个字符个字符?right(“abcdefghij”,4)3.中间截取子字符串中间截取子字符串:substring(串串,m,n)对串从对串从m位起截取位起截取n个字符。个字符。?Subs(“abcdefghij”,5,4)?Subs(“沈阳师范大学”,5,4)&abcd&ghij&efgh&师范师范4.求字符串长度:求字符串长度:LEN():求串求串C的长度的长度?LEN(”ABC”)?LEN(“函数函数”)34第15页,本讲稿共26页字符串函数字符串函数5.删除空格函数:删除空格函数:LTRIM():删除删除C的左端空格的左端空格RTRIM():删除删除C的右端空格的右端空格ALLTRIM():删除删除C的左、右端空格的左、右端空格?ab+LTRIM(cd)?RTRIM(ab )+cd?a+ALLTRIM(b )+cdabcd6.求字符串长度:求字符串长度:LEN()求串求串C的长度的长度?LEN(ABC)?LEN(函数函数)347.生成空格函数生成空格函数SPACE(N)产生个空格产生个空格?“同学们”SPACE(8)+”大家好!”同学们大家好!同学们大家好!第16页,本讲稿共26页10.子字符串检索函数子字符串检索函数:AT(,):从从N位置开始求位置开始求C1在在C2中第一次出现的位置,省略中第一次出现的位置,省略N则从则从1开始起开始起,不出现结果为不出现结果为ATC(,):不区分大小写不区分大小写 STORE abcdekaacbkjc to s?occurs(a,s),occurs(b,s),occurs(s,s),occurs(e,s)?AT(C,ACB)?AT(B,ABAB,3)24 9.子字符串出现次数子字符串出现次数OCCURS(,):求串求串1在串在串2中出现的次数中出现的次数,数值型数值型.3 2 0 111.字符串匹配函数字符串匹配函数:LIKE(,):比较串比较串1和串和串2对应位置上的字符串对应位置上的字符串,若匹配若匹配,则为则为.T.,串串1中可以中可以包含通配符包含通配符?和和*.x=abcy=abcd?like(ab*,x),like(x,y).T.F.第17页,本讲稿共26页12.字符串替换函数字符串替换函数stuff(串,串,m,n,串),串)用串替换串用串替换串m位开始位开始n个指定字符。串为空时,则删掉个指定字符。串为空时,则删掉n个字符,当个字符,当n为为时,则插入一个字符串。时,则插入一个字符串。例如例如?Stuff(“abcdefg”,3,4,”*”)?Stuff(“abcdefg”,3,0,”*”)?Stuff(“abcdefg”,3,4,”)ab*gab*cdefgabg13.大小写转换函数大小写转换函数UPPER():把把C转换成大写转换成大写 LOWER():把把C转换成小写转换成小写 例:UPPE(“abCD”)LOWER(“abCD”)ABCDabcd第18页,本讲稿共26页14.宏替换函数宏替换函数:字符型变量字符型变量例:例:x=”2001”?&x+5?”&x+5”?&x.5&2006&2006&2001+5&2001+5&20015&20015替换字符型变量的内容。即函数值是变量中的内容。用圆点将圆点后的字符串附在宏代换函数返回值之后。DB=“学生”Use&DB&use 学生第19页,本讲稿共26页日期函数日期函数 DATE():系统当前日期系统当前日期日期型日期型TIME():系统当前时间系统当前时间字符型字符型 DATETIME()日期时间型日期时间型YEAR(表达式表达式):取日期表达式的年份值取日期表达式的年份值MONTH(表达式表达式):取日期表达式的月份值取日期表达式的月份值DAY(表达式表达式):取日期表达式在月份中的天数值取日期表达式在月份中的天数值?Year(date()?Month(date()?day(date()?date(),time(),datetime()2009 314第20页,本讲稿共26页类型转换函数类型转换函数 VAL():C型数据转换成型数据转换成N型数据型数据,遇到字母不转换。保留两位小数遇到字母不转换。保留两位小数?VAL(23.7)?VAL(2+3)23.70 2.00STR(STR(数值数值数值数值,长度长度长度长度,小数位)小数位)小数位)小数位):数值转成字符函数数值转成字符函数(四舍五入四舍五入)CTOD():将字符表达式值转换成日期型数据将字符表达式值转换成日期型数据DTOC():将日期型数据转换成字符串将日期型数据转换成字符串N=-123.456N=-123.456?str(n,9,2),str(n,6,2),str(n,3),str(n,6)?str(n,9,2),str(n,6,2),str(n,3),str(n,6)-123.46 -123.5 *-123 -123.46 -123.5 *-123长度数值整数位小数位数长度数值整数位小数位数长度数值整数位小数位数长度数值整数位小数位数1(1(小数点小数点小数点小数点)长度长度长度长度 数值位数数值位数数值位数数值位数左补空格左补空格左补空格左补空格长度长度长度长度 数值的整数位数数值的整数位数数值的整数位数数值的整数位数 输出一串输出一串输出一串输出一串长度优先满足整数部分长度优先满足整数部分长度优先满足整数部分长度优先满足整数部分第21页,本讲稿共26页测试函数 值域测试函数值域测试函数:BETWEEN(表达式表达式1,表达式表达式2,表达式表达式3)表达式表达式1的值在表达式的值在表达式2和表达式和表达式3的值中间返回的值中间返回.T.?BETWEEN(150,100,300),BETWEEN(50,100,300),.T.F.空值空值(NULL)测试函数测试函数:ISNULL(表达式表达式):只有表达式为只有表达式为.NULL.时,结果为时,结果为.T.?ISNULL(.NULL.)“空空”值测试函数值测试函数:EMPTY(表达式表达式):当表式为空字符串、空格、数据当表式为空字符串、空格、数据0、逻辑值、逻辑值.F.、制表符、回、制表符、回车换行等值时结果为车换行等值时结果为.T.T.例例:运算结果为真的是运算结果为真的是A)EMPTY(.NULL.)B)LIKE(XY?,XYZ)C)AT(XY,ABCXYZ)D)ISNULL(SPACE(0)B第22页,本讲稿共26页数据类型测试函数数据类型测试函数:VARTYPE(表达式表达式):以一个大写字母的形式返回表达式的类型以一个大写字母的形式返回表达式的类型N,C,Y,L,T,X:Null值值 U:未定义未定义4.设X=10,语句?VARTYPE(X)的输出结果是 A)N B)C C)10 D)X 13设 X=65,命令?VARTYPE(X)的输出是:A)NB)CC)LD)出错条件测试函数条件测试函数:IIF(,)逻辑表达式值为逻辑表达式值为.t.结果为表达式的值,否则为表达式的值结果为表达式的值,否则为表达式的值?Iif(len(spac(5)5,1,-1)-1第23页,本讲稿共26页文件尾测试函数文件尾测试函数:EOF(工作区号工作区号|表别名表别名):测试表文件中的记录指针是否指向文件尾测试表文件中的记录指针是否指向文件尾文件头测试函数文件头测试函数:BOF(工作区号工作区号|表别名表别名):测试表文件中的记录指针是否指向文件首测试表文件中的记录指针是否指向文件首记录号测试函数记录号测试函数:RECNO(工作区号工作区号|表别名表别名):返回指定表文件中当前记录的记录号返回指定表文件中当前记录的记录号记录个数测试函数记录个数测试函数:RECCOUNT(工作区号工作区号|表别名表别名):返回指定表文件中的记录个数返回指定表文件中的记录个数记录删除测试函数记录删除测试函数:DELETED(工作区号工作区号|表别名表别名):测试指定表文件中当前记录是否有删除标记测试指定表文件中当前记录是否有删除标记第24页,本讲稿共26页2.5 Visual FoxPro命令语法规则命令语法规则 2.5.1Visual FoxPro的命令格式的命令格式 基本格式如下:基本格式如下:命令格式中用命令格式中用“”表示必选项,在命令中必须选择该表示必选项,在命令中必须选择该项;用项;用“”表示可选项,可以根据实际需要选用或表示可选项,可以根据实际需要选用或省略该项内容;用省略该项内容;用“”表示任选项,可以根据实际表示任选项,可以根据实际需要任选且必选其中一项内容。需要任选且必选其中一项内容。第25页,本讲稿共26页2.5.2命令书写规则命令书写规则l任何命令必须以命令动词开始。任何命令必须以命令动词开始。l除命令动词外,命令中其他各子句的排列顺序不会影响命令的除命令动词外,命令中其他各子句的排列顺序不会影响命令的功能。功能。l命令动词与子句之间、各子句之间都以空格分隔。命令动词与子句之间、各子句之间都以空格分隔。l一个命令行最多包含一个命令行最多包含8192个字符,一行书写不完可以在行尾加个字符,一行书写不完可以在行尾加分号作为续行标志,然后换行继续书写。分号作为续行标志,然后换行继续书写。l不区分命令字符的大小写。不区分命令字符的大小写。l命令中除了汉字外所有的字符和标点都应在半角情况下输入。命令中除了汉字外所有的字符和标点都应在半角情况下输入。l文件名、字段名和变量名应避免使用保留字。文件名、字段名和变量名应避免使用保留字。l注释符号为注释符号为&,标在需要注释的文字前面。,标在需要注释的文字前面。第26页,本讲稿共26页