函数在程序中能进行数据运算或类型转换的作用,在程序中起到一定的作用。
下面我就一些常用的函数进行一下归类讲解。
(1)数值函数:运算结果为数值类型。
常见的有abs 绝对值函数sqrt 平方根函数int 取整函数,只取整数位舍去小数位ceiling 返回大于或等于指定数值表达式的最小整数floor 返回小于或等于指定数值表达式的最大整数round 四舍五入函数,返回指定数值表达式在指定位置四舍五入后的结果mod 返回两个数值表达式相除后的余数,余数的正负号与除数一致max 计算各表达式中的值,返回最大值min 计算各表达式中的值,返回最小值(2)字符函数:运算结果为字符类型。
常见的有len 返回指定字符表达式值的长度,以字节为单位,一个西文字符或空格占一个字符,一个中文字符占两个字符函数值为数值型lower,upper 分别将指定的字符表达式转换成大写和小写字母,其它字符不变space 返回由指定数目的空格组成的字符串trim,ltrim,alltrim返回指定字符表达式去掉尾部、首部、首尾部空格形成的字符串left,right 分别从指定表达式值的左端、右端取一个指定长度的子串作为函数值substr 从指定表达式值的指定位置取指定长度的子串作为函数 at,atc 如果前字符串是后字符串的子串,测试前字符串首字符在后字符串中第几次出现的位置,函数值为数值型,atc在测试中不区分字母大小写stuff 从前字符串指定位置开始指定长度的字符用后字符串替换like 比较前后两个字符串对应位置上的字符,若所有对应字符都相匹配,函数返回值为逻辑真,否则为逻辑假,前字符串可包含通配符(3)日期和时间函数date 返回当前系统日期,函数值为日期型time 以24小时制、hh:mm:ss格式返回当前系统时间,函数值为字符型datetime 返回当前系统日期时间,函数值为日期时间型year,month,day 分别从指定的日期或日期时间表达式中返回年份、月份、天数hour,minute,sec分别从指定的日期时间表达式中返回小时、分钟、秒数部分(4)类型转换函数str 数值转换成字符串val 字符串转换成数值ctod 字符转换成日期dtoc 日期转换成字符& 替换出字符型变量的内容(5)测试函数:函数值为逻辑型between 判断一个表达式的值是否介于另外两个表达式的值之间isnull 判断一个表达式的值是否为空值empty 判断指定的表达式的运算结果是否是空值eofbof 测试指定的表文件中的记录指针是否处于尾标和首标recno 测试指定的表文件中的当前记录的记录号reccount 测试指定的表文件中的记录个数iif 测试逻辑表达式的值,若为逻辑真,函数返回前表达式的值,否则返回后表达式的值deleted 测试指定的表文件中的当前记录是否有删除标记第二种总结方式:数值函数:1.绝对值和符号函数格式:ABS(<数值表达式>)SIGN(<数值表达式>)例如:ABS(-5)=5,ABS(4)=4,SIGN(8)=1,SIGN(-3)=-1,SIGN(0)=02.求平方根表达式格式:SQRT(<数值表达式>)例如:SQRT(16)=4,它与开二分之一次方等同。
3.圆周率函数格式:PI()4.求整数函数格式:INT(<数值表达式>)返回数值表达式的整数部分CEILING(<数值表达式>)返回大于或等于表达式的最小整数FLOOR(<数值表达式>)返回小于或等于表达式的最大整数例如:INT(5.8)=5.8,INT(-7.8)=-7,CEILING(6.4)=7,CEILING(-5.9)=-5FLOOR(9.9)=95.四舍五入函数格式:ROUND(<数值表达式1>,<数值表达式2>)功能:返回制定表达式在制定位置四舍五入的结果例如:ROUND(345.345,2)=345.35,ROUND(345.345,1)=345.3,ROUND(345.345,0)=345,R OUND(345.345,-1)=3506.求余函数格式:MOD(<数值表达式1>,<数值表达式2>)例如:MOD(10,3)=1 MOD(10,-3)=-2 MOD(-10,3)=2 MOD(-10,-3)=-1求余数的规律:1.首先按照两数的绝对值求余2.表达式1的绝对值大于表达式2的绝对值,则余数为表达式1的值3.余数取表达式1的正负号4.若两数异好号,余数在加上表达式2的值为最终的结果7. 求最大值和最小值函数MAX(数值表达式列表)MIN (数值表达式列表)例如:MAX(2,3,5)=5 MAX(‘2’,’12’,’05’)=2 MAX(‘汽车’,’飞机’,’轮船’)字符串比较的规律:字符串比较首先比较第一个字母,如果有结果那就不用在进行比较了。
如果相等在进行第二个字母的比较,以次类推。
字符函数1.求字符串长度函数格式:LEN(<字符表达式>)功能:返回制定字符表达式的长度,即所包含的字符个数。
函数值为数值型例如:X=“中文Visual FoxPro6.0”则LEN(X)=202.大小写转换函数格式:LOWER(<字符表达式>)UPPER(<字符表达式>)功能:LOWER将制定表达式值中的大写字母转换成小写字母,其他字符不变UPPER将指定表达式值中的小写字母转换成大写字母,其他字符不变。
例如:LOWER(‘X1y2A’)=x1y2a UPPER(‘n=1’)=N=13.空格字符串生成函数格式:SPACE(<字符表达式>)功能:返回指定数目的空格组成的字符串。
4.删除前后空格函数格式:TRIM(<字符表达式>)LTRIM(<字符表达式>)ALLTRIM(<字符表达式>)功能:TRIM():返回指定字符表达式值去掉尾部空格后形成的字符串LTRIM():返回指定字符表达式值去掉前导空格后形成的字符串ALLTRIM():返回指定字符表达式值去掉前导空格和尾部空格后形成的字符串。
例如:STORE SPACE(1) ”TEST” SPACE(3) TO SS?TRIM(SS) LTRIM(SS) ALLTRIM(SS)LEN(SS)=8,LEN(TRIM(SS))=5,LEN(LTRIM(SS))=7,LEN(ALLTRIM(S S))=45.取子串函数格式:LEFT(<字符表达式>,<长度>)RIGHT(<字符表达式>,<长度>)SUBSTR(<字符表达式>,<起始位置>,<长度>)功能:LEFT(): 从指定表达式值的左端取一个指定长度的子串作为函数值。
RIGHT():从指定表达式值的右端取一个指定长度的子串作为函数值。
SUBSTR():从指定表达式值的起始位置取指定长度的子串作为函数值。
例如:STORE “GOOD BYE!” TO XLEFT(X,2)=GO,SUBSTR(X,6,2) SUBSTR(X,6)=BYBYE!,RIGHT(X,3)=YE!6.计算子串出现次数函数格式:OCCURS(<字符表达式1>,<字符表达式2>)功能:返回第一个字符串在第二个字符串中出现的次数。
例如:STORE ‘abracadabra’ TO SOCCURS(‘a’,S)=5, OCCURS(‘b’,S)=2, OCCURS(‘c’,S)=1, OCCURS(‘e’, S)=07.求子串位置函数格式:AT(<字符表达式1>,<字符表达式2>,<数值表达式>)ATC(<字符表达式1>,<字符表达式2>,<数值表达式>)功能:验证表达式1是否是表达式2的子串,如果是,返回表达式1的首字符在表达式2中的位置,若不是,则为0ATC()与AT()的功能类似,但比较时不区分大小写例如: STORE”This is Visual FoxPro” TO XAT(“fox”,X)=0,ATC(“fox”,X)=16,AT(“is”,X,3)=10,AT(“xo”,X) 8.子串替换函数格式:STUFF( <字符表达式1>,<起始位置>,<长度>,<字符表达式2>)功能:用<字符表达式2>的值替换<字符表达式1>中由<起始位置>和<长度>指明的一个子串。
例如:STORE ‘GOOD BYE!’ TO S1STORE ‘MORNING’ TO S2?STUFF(S1,6,3,S2)=GOOD MORNING!?STUFF(S1,1,4,S2)=MORNING BYE!9.字符替换函数格式:CHRTRAN(<字符表达式1>,<字符表达式2>,<字符表达式3>)功能:当第一个字符中的一个或多个字符与第二个字符串中的某个字符相匹配时,就用第三个字符中的对应字符(相同位置)替换这些字符。
如果第三个字符串包含的字符个数少于第二个字符串包含的字符个数,因而没有对应字符,那么第一个字符串中相匹配的各字符将会被铲除。
如果第三个字符串包含的字符个数多于第二个字符串包含的字符个数,多于字符被删掉。
例如:CHRTRAN(“ABACAD”,”ACD”,”X12”)=XBX1X2CHRTRAN(“计算机ABC”,”计算机”,”电脑”)=电脑ABCCHRTRAN(“大家好!”,”大家”,”您”)=您好!总结:第二个表达式没有的照写,第三个表达式没有的去掉。
10.字符串匹配函数格式:LIKE(<字符表达式1>,<字符表达式2>)功能:比较两个字符串对应位置上的字符,若所有对应字符相匹配,函数返回逻辑真(.T.)否则返回逻辑假(.F.)<字符表达式1>中可以包含通配符*和?。
*可与任何数目的字符相匹配,?可以与任何单个字符相匹配。
例如:STORE “abc” to xSTORE “abcd” to yLIKE(“ab*”,x)=.T. LIKE(“ab*”,y)=.T. LIKE (x,y)=.F. LIKE(“?b?”,x)=.T. LIKE(“ABc”,x)=.F. 日期和时间函数1.系统日期和时间函数:格式:DATE():返回当前系统日期,函数值为日期型TIME():以24小时制、HH:MM:SS格式返回当前系统时间(字符型)DATETIME():返回当前系统日期时间,函数值为日期时间型2.求年份、月份、天数函数格式:YEAR(<日期表达式>|<日期时间表达式>)MONTH(<日期表达式>|<日期时间表达式>)DAY(<日期表达式>|<日期时间表达式>)3.时、分和秒函数格式:HOUR(<日期时间表达式>)MINUTE(<日期时间表达式>)SEC(<日期时间表达式>)数据类型转换函数1.数值转换成字符串格式:STR(<数值表达式>,<长度>,<小数位数>)例如:STORE –123.456 TO NSTR(N,9,2)=-123.46,STR(N,6,2)=-123.5STR(N,3)=***,STR(N,6)=-123,STR(N)=-1232.字符串转换成字符格式:VAL(<字符表达式>)例如:STORE ‘-123.’ TO X,STORT ‘45’ TO YSTORE ’A45’ TO ZVAL(X Y)=123.45,VAL(X Z)=123.00,VAL(Z Y)=0.003.字符串转换成日期或日期时间格式:CTOD(<字符表达式>)转化成日期型数据CTOT(<字符表达式>)转化成日期时间型数据4.日期或日期时间转化成字符串格式:DTOC(<日期表达式>|<日期时间表达式>[,1])TTOC(<日期时间表达式> [,1])功能TOC()将日期型数据或日期时间数据的日期部分转化成字符串TTOC()将日期时间数据转化成字符串声明:对DTOC()来说,如果选项是1,则字符串的格式总是YYYYMMDD,8个字符。