《数据类型表达式和函数.ppt》由会员分享,可在线阅读,更多相关《数据类型表达式和函数.ppt(161页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、封面第二章 数据类型表达式和函数1 1 常量与变量常量与变量常量与变量常量与变量2.2.运算符与表达式运算符与表达式运算符与表达式运算符与表达式3.3.常用函数常用函数常用函数常用函数2.1 2.1 常量与变量常量与变量2.1.1 常量常量 常量常量是指操作是指操作过程中其程中其值固定不固定不变的数的数据,是一个具体的数据内容。据,是一个具体的数据内容。例如字符串、常数或具体的日期。例如字符串、常数或具体的日期。数值型常数数值型常数由数字由数字0-9、小数点及正、小数点及正负号构成号构成可用科学可用科学计数法表示数法表示:1.2345E+3表示表示1.2345103,即,即1234.5;2.4
2、5E-4表示表示2.4510-4,即,即0.000245 货币型常数货币型常数货币型常量表示型常量表示货币在数在数值前加上一个前加上一个货币符号符号($)。货币型常量在存型常量在存储和和计算算时,采用,采用4位位小数。当小数。当货币型常量超型常量超过4位小数位小数时,多余的小数位将四舍五入多余的小数位将四舍五入 字符常数字符常数字符型常量是用英文的单引号、双引号或方括号括起来的一串字符,也称为字符串。字符可以是英文字母、数字、标点符号等所有ASCII码字符及汉字。例如:湖南长沙、0731-8821234、smith都是字符串。字符常数字符常数单引号、双引号或方括号是字符串的引号、双引号或方括号
3、是字符串的定界符定界符定界符定界符,它它们用来用来规定字符串的起始和定字符串的起始和终止界限,不作止界限,不作为字符串本身的内容。字符串本身的内容。字符串的定界符必字符串的定界符必须成成对匹配,即当一匹配,即当一边以以单引号作引号作为定界符定界符时,另一,另一边也必也必须以以单引号作引号作为定界符。定界符。此外,如果字符串本身含有作此外,如果字符串本身含有作为定界符的字符,定界符的字符,则必必须用另一种符号作用另一种符号作为定界符。定界符。字符常数字符常数字符串的字符串的长度度是指字符串中所含字符的是指字符串中所含字符的个数,其中,每个个数,其中,每个汉字相当于字相当于2个字符。个字符。字符串
4、的最大字符串的最大长度不能超度不能超过254。只有定界符没有任何字符的字符串称只有定界符没有任何字符的字符串称为空串空串,其,其长度度为0。日期型日期型常数常数默默认情况下,日期型常量要使用情况下,日期型常量要使用严格的日期格式格的日期格式yyyy-mm-ddyyyy-mm-dd。以花括号以花括号 作作为定界符,花括号内第一个符号定界符,花括号内第一个符号是是,年份必,年份必须为四位,年月日的次序不能四位,年月日的次序不能颠倒倒或缺省。或缺省。年月日的分隔符可以年月日的分隔符可以为/(斜杠)、(斜杠)、_(下划(下划线)、)、.(圆点)或空格。点)或空格。例如,例如,2008-8-1 2008
5、/08/01 2008.8.1 2008 8 1均表示均表示2008年年8月月1日。日。日期型日期型常数常数若要若要设置置传统的日期格式,的日期格式,则应执行行SET SET STICTDATE TO 0STICTDATE TO 0命令。命令。默默认用用mm/dd/yy或或mm/dd/yyyy表示日表示日期常量。例如,期常量。例如,6/25/08或或6/25/2008均表均表示示2008年年6月月25日。日。若要恢复若要恢复为严格的日期格式,格的日期格式,执行行SET SET STICTDATE TO 1STICTDATE TO 1命令命令 提示本书在介绍命令时,约定方括号中的内容表示可选,竖
6、杠|分隔的内容表示任选其一,尖括号中的内容由用户提供。SET DATE TO SET DATE TO AMERICAN|ANSI|BRITISH|FRENCH|GERMAN|ITALIAN|JAPAN|USA|MDY|DMY|YMD设置日期的置日期的显示格式示格式,缺省格式缺省格式为AMERICAN,即,即mm/dd/yy。设置日期显示的格式设置日期显示的格式设置日期格式的参数设置日期格式的参数 短语格式短语格式短语格式YMDyy/mm/ddMDYmm/dd/yyDMYdd/mm/yyAMERICAN/USAmm/dd/yyANSIyy.mm.ddGERMANdd.mm.yyBRITISH/F
7、RENCHdd/mm/yyITALIANdd-mm-yyJAPANyy/mm/ddSET CENTURY ON/OFFSET CENTURY ON/OFF设置置显示日期示日期时是否是否显示世示世纪值。当使用当使用ONON,显示世示世纪值,即年号以,即年号以4 4位位显示;使示;使用用OFFOFF,不,不显示世示世纪值,即年号以,即年号以2 2位位显示。示。设置是否显示世纪值设置是否显示世纪值SET CENTURY OFF&设置2位数字年份SET DATE TO YMD&设置年月日格式?2008-6-1&显示结果为08/06/01SET STRICTDATE TO 0&设置不进行严格的日期格式检
8、查SET CENTURY ON&设置4位数字年份SET DATE TO DMY&设置日月年格式?2008-6-1,1/7/08&显示结果为01/06/2008和01/07/2008例题例题例题例题日期时间型常数日期时间型常数日期日期时间型常量包括日期和型常量包括日期和时间两部分两部分日期日期,时间。日期部分的格式和日期型常量相似,日期部分的格式和日期型常量相似,时间部分部分的格式的格式为HH:MM:SS A|P。HH、MM、SS分分别表示表示时、分、秒,、分、秒,A、P分分别表示上午和下午。表示上午和下午。时、分、秒可以缺省,默、分、秒可以缺省,默认值为12、0、0。A、P可以缺省,默可以缺省
9、,默认为上午。上午。注意:日期和注意:日期和时间之之间必必须用逗号或空格隔开。用逗号或空格隔开。2008-6-12008-6-1,表示表示20082008年年6 6月月1 1日上午日上午1212点(午夜)点(午夜)时间部分可以采取部分可以采取2424小小时制,当制,当时间大于或等于大于或等于1212,则自然表示下午。自然表示下午。例如,例如,2008-6-1 1:20:30 P2008-6-1 1:20:30 P和和2008-6-1 2008-6-1 13:20:3013:20:30均表示均表示20082008年年6 6月月1 1日下午日下午1 1点点2020分分3030秒秒日期时间型常数日期
10、时间型常数区域区域选项卡卡工具工具(T)(T)选项(O)(O)设置日期格式设置日期格式逻辑常数逻辑常数逻辑型常量只有型常量只有逻辑真和真和逻辑假两个假两个值。逻辑真真值用用.t.,.T.,.y.,.Y.表示,表示,逻辑假假值用用.f.,.F.,.n,.N.表示表示注意:注意:圆点作点作为逻辑型常量的定界符,型常量的定界符,必不可少。必不可少。2.1.2 2.1.2 内存变量内存变量分分为字段字段变量和内存量和内存变量量内存内存变量量:独立于数据表而存在,通常:独立于数据表而存在,通常用来存放命令操作或程序运行用来存放命令操作或程序运行过程中的程中的一些中一些中间结果。果。内存内存变量的量的值在
11、操作在操作过程中可以被改程中可以被改变。退出退出VFP后,内存后,内存变量将被自量将被自动释放。放。变量命名规则变量命名规则 变量名以字母、量名以字母、汉字或下划字或下划线开开头,由数,由数字、字母、字、字母、汉字或下划字或下划线组成。成。名称最名称最长可达可达254个字符。个字符。A、Class_2、年、年龄 合法的合法的变量名量名3Grade、b*非法的非法的变量名量名 不要使用不要使用VFP的保留字作的保留字作为变量名。量名。=STORE STORE TOTO 计算表达式的算表达式的值,再将,再将该值赋给内存内存变量。量。内存变量的赋值内存变量的赋值等号等号=一次只能一次只能给一个一个变
12、量量赋值,Store可同可同时给多多个个变量量赋同一个同一个值。多个。多个变量之量之间用逗号隔开。用逗号隔开。简单变量量赋值时无需事先声明或定无需事先声明或定义。当。当变量被量被赋值时,若,若该变量此量此时还不存在,系不存在,系统将建立此将建立此变量,量,即在内存中即在内存中为其定其定义一个存一个存储区域。区域。变量的量的值和数据和数据类型由最后型由最后赋予它的表达式决定。予它的表达式决定。当当变量被重新量被重新赋值时,其,其值发生改生改变。若新。若新值为其他其他数据数据类型,型,则变量的数据量的数据类型也相型也相应地地发生改生改变。内存变量的赋值内存变量的赋值 n1=3&把数值3赋给内存变量
13、n1,n1是数值型内存变量 name=王波王波&把字符串赋给内存变量name,name是字符型内存变量例题例题例题例题 store 2008/6/1 to 日期日期1,日期日期2&把日期常量2002年9月12日同时赋给内存变量日期1和日期2,日期1和日期2是日期型内存变量l=.t.&把逻辑真值.t.赋给内存变量l,l是逻辑 型内存变量 n2=n1&计算表达式n1的值为3,将n2赋值为3n1的值不受影响n2=n2+1&计算表达式n2+1的值为4,将n2赋值为4n2=n2+1&将字符串n2+1赋值给变量n2,n2是字符型内存变量例题例题例题例题?计算表达式的算表达式的值,将其,将其显示在窗口工作区
14、。示在窗口工作区。?命令首先命令首先换行,在当前行的下一行行,在当前行的下一行显示表达式的示表达式的值。?命令不命令不换行,在当前行的光行,在当前行的光标处显示表达式的示表达式的值。?/?/?可接多个表达式,表达式之可接多个表达式,表达式之间用逗号隔开。用逗号隔开。显示表达式的值显示表达式的值?n1=,n1&n1=为字符型常量,n1为变量,窗口工作区显示n1=3?n2&窗口工作区另起一行,显示n2+1?name&窗口工作区在n2+1的后面显示王波例题例题例题例题LIST/DISPLAY MEMORY LIST/DISPLAY MEMORY LIKE LIKE TO PRINTER|TO FIL
15、E TO PRINTER|TO FILE 显示内存变量的当前信息,包括变量名、作用域、类型、取值。内存变量的显示内存变量的显示使用LIST MEMORYLIST MEMORY,在屏幕上以滚动方式显示,不分屏显示;使用DISPLAY MEMORYDISPLAY MEMORY,分屏显示,即显示了一屏后,显示暂停,提示“按任意键继续”,按下任意键后,继续显示下一屏。内存变量的显示内存变量的显示LIKELIKE 通配符表示只显示与通配符相匹配的内 存变量。通配符*表示任一串字符,?表示任一个字符。VFP有74个系统变量。如果用户只要求显示所有自定义变量,可以使用命令DISPLAY MEMORY LIK
16、E*。内存变量的显示内存变量的显示TO PRINTERTO PRINTER子句,表示将显示的信息同时送打印机打印。TO FILETO FILE 子句,表示将显示的信息存入指定的文本文件,文件的扩展名为txt。内存变量的显示内存变量的显示display memo like*&显示用户定义的全部内存变量display memo like n*&显示以字母n开头的所有内存变量,即n1,name和n2 display memo like n?&显示以字母n开头,且名称不多于两个字符组成的内存变量 即n1和n2例题例题例题例题RELEASE RELEASE 清除内存变量内存变量的清除内存变量的清除REL
17、EASE RELEASE ALLALL LIKE LIKE|EXCEPT EXCEPT CLEAR MEMORYCLEAR MEMORY提示提示在输入命令时,命令中的保留字可只输入前4个字符。例如display memory 可简化为disp memo CLEAR MEMORYCLEAR MEMORYCLEAR MEMORYCLEAR MEMORY和RELEASE ALLRELEASE ALLRELEASE ALLRELEASE ALL清除内存中所有内存变量。RELEASE内存变量名表清除指定的内存变量。使用LIKE子句,清除符合通配符的变量;使用EXCEPT子句,清除不符合通配符的变量。内存
18、变量的清除内存变量的清除Release 日期日期1,日期日期2&清除变量日期1和日期2Release all like n*&清除所有变量名以n开始的变量,即n1,n2和name。Disp memo like*&此时,显示的变量有l例题例题例题例题2.1.3 2.1.3 数组数组内存内存变量又分量又分为简单内存内存变量量和和数数组。每一个每一个简单变量只占用内存中的一个存量只占用内存中的一个存储区域,存区域,存储一个一个值。而一个数而一个数组在内存中占用在内存中占用连续的一的一组存存储区域,由多个数区域,由多个数组元素元素组成。每个数成。每个数组元素占用一个存元素占用一个存储区域,相当于一个区
19、域,相当于一个简单变量。用量。用户通通过数数组名和下名和下标来来访问数数组元素。元素。DIMENSIONDIMENSION(,),DECLARE DECLARE(,),DIMENSION和DECLARE两种命令的功能相同,定义多个一维数组或二维数组数组的下标下限规定为1,一维数组的元素个数为下标上限1,二位数组的元素个数为下标上限1*下标上限2。数组的创建数组的创建DIMENSION m(4),n(2,3)命令定义了数组m和n。&m是一维数组,4个数组元素:m(1)、m(2)、m(3)、m(4)。&n是二维数组,有6个数组元素:n(1,1)、n(1,2)、n(1,3)、n(2,1)、n(2,2
20、)、n(2,3)。可以用一维数组的形式访问二维数组。例如二维数组n如果用一维数组表示,依次为n(1)、n(2)、n(3)、n(4)、n(5)、n(6)。即n(4)和n(2,1)是同一个数组元素。例题例题例题例题数组创建后,系统自动给每个元素赋以逻辑值假逻辑值假逻辑值假逻辑值假。通过对数组名赋值,可以将同一个值同时赋给全部的数组元素。每个数组元素可分别赋值,同一数组中各数组元素类型可以不同 数组的赋值数组的赋值DIMENSION m(4),n(2,3)&定义了一维数组m和二维数组n。?m(1),n(1,1)&数组创建后,每个数组元素的初值为逻辑值假。m=5&通过对数组名赋值将所有数组元素赋值为5
21、?m(1),m(2),m(3),m(4)n(1,1)=1n(1,2)=中国中国n(1,3)=2008/10/1&每个数组元素可分别赋值,数据类型可以不同例题例题例题例题2.2 2.2 运算符与表达式运算符与表达式表达式是由常量、变量、函数通过特定的运算符连结起来的有意义的式子。每一个表达式经过运算,将得到一个具体的结果,称为表达式的值。n1*0.85 +sqrt(9)变量变量运算符运算符常量常量函数函数表达式表达式根据表达式值的类型,可将表达式分为数值表达式、字符表达式、日期表达式和逻辑表达式。单个的常量、变量和函数,也可以看作一种特殊的表达式。2.2.1 数值型表达式数值型表达式()*或 (
22、乘方)2*4表示24 值为16*/%*/%(求余)10%3表示10除3的余数值为1+优优先先级级算数运算符算数运算符?1+52*2&结果为51。首先进行乘方运算,再进行乘法运算,最后进行加法。例题例题例题例题用表达式表示2*32+1.24+45?(2*32+1.2)/(4+4/5)&对于某些数学算式,注意利用括号来改变优先级例题例题例题例题对于求余运算,余数的正负号与除数相同?10%3,10%(-3),-10%3,-10%-3&结果为1,-2,-1,2 10-34余数为-210-3-3余数为1&表达式的值为-22.2.2 2.2.2 字符型表达式字符型表达式连接运算符+号:将前后两个字符串连接
23、起来,形成一个新的字符串。号:将前后两个字符串连接起来,若第一个字符串的尾部有空格,则将空格移到合并后字符串的尾部,其他位置的空格不改变位置。字符型运算符字符型运算符?“This“+”is”&表达式的结果为“This is”保留前一字符串的尾部空格?“This“-”is”&表达式的结果为“Thisis”将前一字符串的尾部空格移到最后?“This is“-”a book”&表达式的结果为“This isa book”例题例题例题例题?“2+3”,2+3,“2”+“3”&字符常量2+3 2与3相加为5 字符2连接字符3结果为23例题例题例题例题2.2.3 2.2.3 日期型表达式日期型表达式日期日
24、期1+天数天数 日期日期2 或天数或天数+日期日期1 日期日期2 将日期向后推整数的天数得到新的日期日期日期1天数天数 日期日期2将日期向前推整数的天数得到新的日期日期日期1日期日期2 整数整数+1将两个日期相减得到相差的天数排在后面的日期大于排在前面的日期日期型运算符日期型运算符日期日期时间1+1+秒数秒数 日期日期时间2 2 秒数秒数+日期日期时间1 1 日期日期时间2 2 将日期时间向后推整数的秒数得到新的日期时间日期日期时间1 1秒数秒数 日期日期时间2 2 将日期时间向前推整数的秒数得到新的日期时间日期日期时间1 1日期日期时间2 整数整数+1将两个日期时间相减得到相差的秒数排在后面
25、的日期大于排在前面的日期日期型运算符日期型运算符?2008/10/1+7&表达式的值为2008/10/8,将2008年10月1日向后推7天?2008/10/1-7&表达式的值为2008/9/24,将2008年10月1日向前推7天?2008/10/1-2008/5/1&表达式的值为153,两个日期相差的天数例题例题例题例题?2008-8-8 8 am+10000&表达式的值为2008年8月8日8点46分40秒,将2008年8月8日上午8时向后推10000秒的时间 例题例题例题例题注意:注意:+和-运算符必须遵循以上规则。例如,日期+日期就是一个非法的表达式。2.2.4 2.2.4 逻辑型表达式逻
26、辑型表达式 大于大于 =大于等于大于等于 =小于等于小于等于 或或!=!=或或#不等于不等于$子串包含测试子串包含测试 =精确等于精确等于 比比较两个两个类型相同的数据(数型相同的数据(数值型、型、货币型、字型、字符型、日期型、符型、日期型、逻辑型)是否符合关系运算符型)是否符合关系运算符规定的关系,若符合,返回定的关系,若符合,返回逻辑真真值,否,否则返回返回逻辑假假值关系型运算符关系型运算符两个数两个数值型数据或型数据或货币型数据比型数据比较时,按数,按数值的大小比的大小比较。两个日期型数据比两个日期型数据比较时,越早的日期越小,越,越早的日期越小,越晚的日期越大。晚的日期越大。两个两个逻
27、辑型数据比型数据比较时,逻辑真真值.T.T.大于大于逻辑假假值.F.F.。关系型运算符关系型运算符?1214&表达式的结果为逻辑假值.F.?5=5&表达式的结果为逻辑真值.T.=即大于或等于?5!=5&表达式的结果为逻辑假值.F.例题例题例题例题?2008/5/12008/10/1&表达式的结果为.F.&因为2008年10月1日晚于2008年5月1日,故2008/10/1大于2008/5/1?(98).F.&表达式的值为.T.&因为98的结果为逻辑真值.T.,大于逻辑假值.F.。例题例题例题例题字符型数据比字符型数据比较时,先比,先比较第一个字符的大小,若第一个字符的大小,若第一个字符大,第一
28、个字符大,则该串大;若第一个字符相同,串大;若第一个字符相同,则比比较第二个字符,直到比第二个字符,直到比较出大小出大小字符的比较次序字符的比较次序VFPVFP规定了规定了MachineMachine机内码、机内码、PinYinPinYin拼音、拼音、StorkeStorke笔笔画三种字符的排序次序,默认为拼音次序。画三种字符的排序次序,默认为拼音次序。PinYinPinYinPinYinPinYin拼音次序拼音次序拼音次序拼音次序:汉字按照拼音顺序排列。西文字:汉字按照拼音顺序排列。西文字符中空格最小,小写符中空格最小,小写abcdabcd字母序列排在前面,大写字母序列排在前面,大写ABCD
29、ABCD字母序列排在后面。字母序列排在后面。MachineMachineMachineMachine机内码次序机内码次序机内码次序机内码次序:汉字按照国标码顺序排列;:汉字按照国标码顺序排列;西文字符按照字符的西文字符按照字符的ASCIIASCII码值大小排列。码值大小排列。StorkeStorkeStorkeStorke笔画次序笔画次序笔画次序笔画次序:无论中文西文,按笔划多少的顺:无论中文西文,按笔划多少的顺序排列。序排列。字符的比较次序字符的比较次序数据数据选项卡卡工具工具(T)(T)选项(O)(O)字符的排序次序字符的排序次序SET COLLATE TO SET COLLATE TO
30、次序名为“MACHINE”或“PINYIN”或“STROKE”字符比较次序字符比较次序SET COLLATE TO MACHINE&按机内码排序?acbabc,a江江苏&表达式的值为.T.F.T.SET COLLATE TO PINYIN&按拼音排序?acbabc,a江江苏&表达式的值为.T.T.T.SET COLLATE TO STROKE&按笔画排序?acbabc,a江江苏&表达式的值为.T.T.F.例题例题例题例题运算符=只能用于字符型数据的运算,当=两旁的字符串完全相同时,返回逻辑真值,否则返回逻辑假值。字符型精确比较与字符型精确比较与EXACTEXACT设置设置使用等于运算符=比较两
31、个字符串时,运算结果与SET EXACT ON|OFF设置有关。系统默认EXACT状态为OFF。若=两旁字符串的字符个数不同,则只要=右边字符串与=左边字符串的前面部分相同,结果就为.T.。当设置EXACT状态为ON时,若=两旁字符串的字符个数不同,系统将在较少字符的字符串尾部添加空格,使两个字符串字符个数相同,再来进行比较。在“选项”对话框的“数据”选项卡,可设置EXACT状态。字符型精确比较与字符型精确比较与EXACTEXACT设置设置SET EXACT OFF?湖南湖南长沙沙=湖南湖南&表达式的值为.T.?湖南湖南=湖南湖南长沙沙&表达式的值为.F.?湖南湖南长沙沙=长沙沙&表达式的值为
32、.F.?湖南湖南长沙沙=湖南湖南&表达式的值为.F.例题例题例题例题SET EXACT ON?湖南湖南长沙沙=湖南湖南&表达式的值为.F.?湖南湖南=湖南湖南长沙沙&表达式的值为.F.?湖南湖南长沙沙=长沙沙&表达式的值为.F.?湖南湖南长沙沙=湖南湖南&表达式的值为.F.例题例题例题例题运算符$用于字符型数据的运算。若$左边的字符串包含在$右边的字符串中,即左边字符串是右边字符串的子串,则返回逻辑真值,否则返回逻辑假值。包含运算符包含运算符$?is$This,This$is&表达式的值为.T.F.?Is$This&表达式的值为.F.,大小写的英文字母不相等?Ts$This&表达式的值为.F.
33、$左边的字符串必须完整连续地被包含在$右边的字符串中,才返回逻辑真值。例题例题例题例题NOTNOT或或!逻辑非逻辑非AND AND 逻辑与逻辑与OR OR 逻辑或逻辑或优优先先级级逻辑型运算符逻辑型运算符XYX AND YX OR YNOT X.F.F.F.F.T.F.T.F.T.T.F.F.T.F.T.T.T.T.逻辑型运算符逻辑型运算符对于逻辑与AND,当连接的两个逻辑型数据均为真值时,结果才为真值;对与逻辑或OR,当连接的两个逻辑型数据均为假值时,结果才为假值。逻辑型运算符逻辑型运算符注意:注意:逻辑运算符的前后必运算符的前后必须有有圆点或空格与其他数据分开。点或空格与其他数据分开。当编
34、写条件时,应写出正确的逻辑表达式书写判断数值型变量x是否大于3且小于10的条件x3 and xx3,因为关系运算只能比较相同数据类型的数据书写判断字符型变量身份是否等于工作人员或教研人员的条件身份身份=工作人工作人员 OR身份身份=教研人教研人员&不能写成 身份=“工作人员”OR“教研人员”,因为逻辑运算符只能连接逻辑型的数据书写判断性别为女的身份为工作人员或教研人员的条件性性别=女女 AND(身份身份=工作人工作人员 OR身份身份=教研人教研人员)&因为AND 的优先级高于OR,所以要加上括号例题例题例题例题?NOT(2+3=6)NOT(5=6).NOT F.T.运算符优先级运算符优先级 关
35、系 逻辑 运算符优先级运算符优先级括号数值、货币、字符、日期?NOT(76)AND ABVABC OR 5*2=8NOT(.T.)AND ABVABC OR 5*2=8NOT(.T.)AND ABVABC OR 10=8NOT(.T.)AND .T.OR .F.F.AND .T.OR .F.F.OR .F.F.例题例题例题例题2.3 2.3 常用函数常用函数VFP提供200余种内置函数,实现数据的运算或转换功能。每个函数有固定的名称,后面加一对圆括号,括号内有若干个自变量。根据系统对函数功能的定义,函数将返回一个值,称为函数值。函数函数SQRT(9)函数名函数名自变量自变量函数值为函数值为32
36、.3.1 2.3.1 数值函数数值函数ABS ABS()返回指定数值表达式的绝对值绝对值函数绝对值函数?abs(-20),abs(0),abs(20)&函数值为20,0,20 例题例题例题例题SIGNSIGN()当的值分别为正数、0、负数时,函数值分别为1、0、-1。符号函数符号函数?sign(-20),sign(0),sign(20)&函数值为-1,0,1例题例题例题例题MOD MOD(,)函数值为除以的余数,函数值的正负号与相同。求余数函数求余数函数?mod(20,3),mod(20,-3),mod(-20,3),mod(-20,-3)&函数值为2,-1,1,-2 例题例题例题例题INT
37、INT()返回数值表达式的整数部分CEILINGCEILING()返回大于或等于数值表达式的最小整数FLOORFLOOR()返回小于或等于数值表达式的最大整数求整数函数求整数函数STORE 5.8 TO X?INT(X),INT(-X)5 -5?CEILING(X),CEILING(-X)6 -5?FLOOR(X),FLOOR(-X)5 -6 例题例题例题例题ROUND ROUND(,)返回数值表达式1在数值表达式2指定位置四舍五入后的结果若数值表达式2大于等于0,指要保留的小数位数若数值表达式2小于0,对整数部分四舍五入四舍五入函数四舍五入函数?round(123.4567,2)&函数值为1
38、23.46?round(123.4567,0)&函数值为123?round(123.4567,-2)&函数值为100 例题例题例题例题SQRT SQRT()返回指定数值表达式的平方根数值表达式的值不能为负求平方根函数求平方根函数EXP EXP()函数值为以e为底数,以为指数的值。指数函数指数函数LOG LOG()函数值为的自然对数值。自然对数函数自然对数函数?exp(3),log(148.51)&函数值为20.09,5例题例题例题例题RAND RAND()函数值为一个0到1之间的随机数。随机数函数随机数函数MAX(MAX(,)返回各表达式的最大值MIN(MIN(,)返回各表达式的最小值表达式的
39、类型可以是数值型、字符型、货币型、日期型、日期时间型,但所有表达式类型必须相同求最大值最小值函数求最大值最小值函数?max(53,5*3,53)&函数值为125?min(53,5*3,53)&函数值为15?max(中国中国,美国美国,日本日本),max(2006-10-1,2008-1-1)&函数值为中国,1/1/08例题例题例题例题PI PI()返回圆周率该函数无参数圆周率函数圆周率函数2.3.2 2.3.2 字符串处理函数字符串处理函数TRIM TRIM()返回字符表达式值去掉前导空格后形成的字符串ALLTRIM ALLTRIM()返回字符表达式值去掉前导和尾部空格后形成的字符串LTRIM
40、 LTRIM()返回字符表达式值去掉尾部空格后形成的字符串删除前后空格函数删除前后空格函数s=湖南湖南?alltrim(s)+长沙沙“&表达式值为湖南长沙?ltrim(s)+长沙沙“&表达式值为 湖南 长沙?trim(s)+长沙沙“&表达式值为 湖南长沙例题例题例题例题SPACE SPACE()返回由指定数目的空格组成的字符串空格字符串生成函数空格字符串生成函数LEN LEN()函数值为的长度,即包含的字符个数。其中,一个ASCII字符长度为1,一个汉字长度为2。字符串长度函数字符串长度函数x=space(1)+HUNAN+space(2)+湖南湖南+space(3)?len(x)&表达式值为
41、15?len(alltrim(x)&表达式值为11?len(ltrim(x)&表达式值为14?len(trim(x)&表达式值为12例题例题例题例题LOWER LOWER()将字符表达式值中的大写字母转换成小写字母,其他字符不变UPPER UPPER()将字符表达式值中的小写字母转换成大写字母,其他字符不变大小写转换函数大小写转换函数?upper(China中国中国)&函数值为CHINA中国?lower(China中国中国)&函数值为 china中国例题例题例题例题LEFT LEFT(,)返回字符表达式值的右端取指定长度的子串SUBSTR SUBSTR(,)返回字符表达式值从起始位置取指定长度
42、的子串若缺省长度,则从起始位置取到最后一个字符RIGHTRIGHT(,)返回字符表达式值的左端取指定长度的子串取子串函数取子串函数 y=“CHINA中国中国”?left(y,5)&函数值为CHINA?right(y,4)&函数值为中国?substr(y,6,2)&函数值为中?substr(y,6)&中国例题例题例题例题AT(AT(,)若第一个字符串是第二个字符串的子串,返回第一个字符串的首字符在第二个字符串中的位置若不是子串,则返回0若指定,则函数值为在中按指定出现的位置。缺省时,默认值为1。该函数区分大小写字母。求子串位置函数求子串位置函数ATC(ATC(,)该函数功能与AT相同,但比较字符
43、表达式时不区分字母大小写。求子串位置函数求子串位置函数store This is Visual Foxpro TO z?at(Fox,z)&函数值为16?at(fox,z)&函数值为0?atc(fox,z)&函数值为16?at(is,z,3)&函数值为10例题例题例题例题OCCURS OCCURS(,)返回第一个字符串在第二个字符串中出现的次数,函数值为数值型若第一个字符串不是第二个字符串的子串,函数值为0计算子串出现次数函数计算子串出现次数函数 m=湖南长沙湖南大学湖南长沙湖南大学?occurs(湖南湖南,m)&函数值为2?occurs(长沙长沙,m)&函数值为1?occurs(长沙大学长沙
44、大学,m)&函数值为0例题例题例题例题 REPLICATE REPLICATE(,)函数值为一个字符串,将重复所指定的次数。产生重复字符的字符串函数产生重复字符的字符串函数?replicate(HUNAN,2)+replicate(湖南湖南,3)&表达式的值为HUNANHUNAN湖南湖南湖南例题例题例题例题STUFF(STUFF(,)用值替换中由起始位置和长度指明的一个子串。如果长度值是0,则插在由指定的字符前面。如果是空串,那么中的由起始位置和长度指明的子串被删去子串替换函数子串替换函数n=长沙湖南大学长沙湖南大学?stuff(n,5,4,中南林业中南林业)&函数的值为长沙中南林业大学?st
45、uff(n,5,0,岳麓山岳麓山)&函数的值为长沙岳麓山湖南大学?stuff(n,5,4,)&函数的值为长沙大学例题例题例题例题CHRTRAN(CHRTRAN(,)函数值为字符串,当的一个或多个字符与中的某个字符相匹配时,就用中相同位置的字符替换这些字符。若在中与相配的字符,在的相同位置上没有字符,则此字符将被删除。字符替换函数字符替换函数?chrtran(124124,123,abc)&函数的值为ab4ab4?chrtran(124124,12,a)&函数的值为a4a4例题例题例题例题LIKE LIKE(,)比较两个字符串上对应位置上的字符,若所有对应字符都想匹配,函数返回逻辑真,否则返回逻
46、辑假可以包含通配符*和?。*可匹配任意数目的字符,?匹配任何单个字符。字符串匹配函数字符串匹配函数?like(王王*,王颖珊王颖珊)&函数的值为.T.?like(王王?,王颖珊王颖珊)&函数的值为.F.?like(王颖珊王颖珊,王王*)&函数的值为.F.例题例题例题例题ASC ASC()函数值为字符表达式中第一个字符的机内码。若是ASC字符,返回ASC码;若是中文字符,返回汉字机内码。求字符的编码函数求字符的编码函数CHR CHR()函数值为一个字符。(是ASC码,返回ASC字符;若是汉字机内码,返回汉字。求编码对应的字符函数求编码对应的字符函数?asc(“A”)&函数的值为65?asc(“中
47、国中国”)&函数的值为54992(汉字“中”的机内码)?chr(65+4)&函数的值为E?chr(54992)&函数的值为中 例题例题例题例题2.3.3 2.3.3 日期和时间处理函数日期和时间处理函数DATE DATE()返回当前系统日期,函数值为日期型TIME TIME()以24小时制HH:MM:SS格式返回当前系统时间,函数值为字符型DATETIME DATETIME()返回当前系统日期时间,函数值为日期时间型系统日期和时间函数系统日期和时间函数从日期或日期时间返回年份(四位整数)YEAR YEAR(|)从日期或日期时间返回月份MONTH MONTH(|)从日期或日期时间返回日号DAY
48、DAY(|)求年份、月份和天数函数求年份、月份和天数函数CMCMONTH ONTH(|)从日期或日期时间返回月份的英文单词d=2008-10-1?year(d)&函数的值为2008?month(d)&函数的值为10?cmonth(d)&函数的值为October?day(d)&函数的值为1例题例题例题例题函数值为1到7中的一个整数,表示或是一星期中的第几天。函数值1表示星期日,2表示星期一。DOW DOW(|)求星期几函数求星期几函数CDOWCDOW (|)函数值为或是星期几的英文单词。函数值为或是当年的第几周。WEEK WEEK(|)星期函数星期函数 d=2008-10-1?dow(d)&函数
49、的值为4?cdow(d)&函数的值为Wednesday?week(d)&函数的值为40例题例题例题例题从日期时间中返回小时部分(24小时制)HOUR HOUR()从日期时间中返回分钟部分MINUTE MINUTE()从日期时间中返回秒数部分SEC SEC()求时、分和秒函数求时、分和秒函数t=2008-10-1 7:30 p?hour(t)&函数的值为19?minute(t)&函数的值为30?sec(t)&函数的值为0例题例题例题例题将某一种类型的数据转换成另一种类型2.3.4 2.3.4 数据类型转换函数数据类型转换函数STR STR(,)将数值表达式转换为字符串,根据需要四舍五入。设数值表
50、达式的整数部分位数加上小数点所占1位加上小数位数的长度为L若大于L,则字符串加前导空格以满足长度;若长度小于L而大于整数部分位数(包括负号),则优先满足整数部分而调整小数部分;若长度小于整数部分位数,则返回星号长度的默认部分为10,小数部分的默认值为0数值转换成字符串数值转换成字符串 n=-100.687?n=+str(n,8,2)&表达式为n=-100.69,前面加上了1个空格?str(n,7,2)&函数的值为-100.69?str(n,6,2)&函数的值为-100.7?str(n,3)&函数的值为*?str(n,5)&函数的值为-101?str(n)&函数的值为 -101例题例题例题例题V