7.函数
Visual FoxPro系统中,函数是一段程序代码,用来进行一些特定的运算或操作,支持和完善命令的功能,帮助用户完成各种操作与管理。Visual FoxPro系统有数百种不同函数。按函数提供方式,可分为系统函数和用户自定义函数;按函数运算、处理对象和结果的数据类型,可分为数值型函数、字符型函数、逻辑型函数、日期时间型函数、数据转换函数等,按函数的功能和特点,可分为
数据处理函数、
数据库操作函数、文件管理函数、键盘和鼠标处理函数、输出函数、窗口界面操作函数、程序设计函数、
数据库环境函数、网络操作函数、系统信息函数和动态数据操作函数等。
Visual FoxPro的函数由函数名与自变量两部分组成。标准函数是Visual FoxPro系统提供的系统函数,其函数名是Visual FoxPro保留字,自定义函数是用户自已定义的函数,函数名用户指定;自变量必须用圆括号对括起来,如有多个自变量,各自变量以逗号分隔;有些函数可省略自变量,或不需自变量,但也必须保留括号;自变量数据类型由函数的定义确定,数据形式可以是常量、变量、函数或表达式等。
函数是一类数据项,除个别(如宏替换)函数外,函数都不能像命令一样单独使用,只能作为命令的一部分进行操作运算。
(1)数值函数
数值函数用于数值运算,其自变量与函数都是数值型数据。
1)取绝对值函数ABS()
【格式】ABS(<数值表达式>)
【功能】计算数值表达式的值,并返回该值的绝对值。
【例】?ABS(-43.29)43.29
2)指数函数EXP()
【格式】EXP(<数值表达式>)
【功能】求以e为底、数值表达式值为指数的幂,即返回该数的指数值。
3)取整函数INT()
【格式】INT(<数值表达式>)
【功能】计算数值表达式的值,返回该值的整数部分。
【例】?INT(-76.93) -76
4)自然对数函数LOG()
【格式】LOG(<数值表达式>)
【功能】求数值表达式的自然对数。数值表达式的值必须为正数。
5)平方根函数SQRT()
【格式】SQRT(<数值表达式>)
【功能】求非负数值表达式的平方根。
【例】?SQRT(5*5) 5.00
6)最大值函数MAX()和最小值函数MIN()
【格式】
MAX(<数值表达式1>,<数值表达式2>[,<数值表达式3>...])
MIN(<数值表达式1>,<数值表达式2>[,<数值表达式3>...])
【功能】返回数值表达式中的最大值MAX()和最小值MIN()。
7)求余数函数MOD()
【格式】MOD(<被除数>,<除数>)
【功能】返回<被除数>除以<除数>得到的余数值。
【说明】在求摸运算中应注意以下几点:
(1)除数不能为0。
(2)除数为正数,返回正数;如果为负数,返回负数。
(3)如果被除数与除数能够整除,结果为0。
(4)如果被除数与除数不能整除,且被除数与除数同号,则结果为被除数除以除数而得到的余数。即:MOD(X1,X2)=X1-INT(X1/X2)*X2。
(5)如果被除数与除数不能整除,且被除数与除数异号,则结果为被
除数除以除数而得到的余数再加上除数。
即:MOD(X1,X2)=X1-INT(X1/X2)*X2+X2。
【例】?MOD(10,3) ;;结果为:1
?MOD(-10,-3) ;;结果为:-1
?MOD(-10,3) ;;结果为:2
?MOD(10,-3) ;;结果为:-2
8)四舍五入函数ROUND()
【格式】ROUND(<数值表达式1>,<数值表达式2>)
【功能】返回数值表达式1四舍五入的值,数值表达式2表示保留的小数位数。
【例】?R0UND(3.14159£?4),ROUND(1234.9962,0),ROUND(1234.567,-1)
3.1416 1235 1230
9)π函数PI()
【格式】PI()
【功能】返回常量π的近似值。
10)随机函数RAND()
【格式】RAND(<数值表达式>)
【功能】产生0-1之间的随机数。
(2)字符函数
字符函数是处理字符型数据的函数,其自变量或函数值中至少有一个是字符型数据。函数中
涉及的字符型数据项,均以cExp表示。
1)子串位置函数
【格式】AT(,)
【功能】返回串cExp1在串cExp2中的起始位置。函数值为整数。如果串cExp2不包含串cExp1,函数返回值为零。
【例】X=”Visual FoxPro 8.0”
?AT(”Fox”£?X);;显示结果为8
?AT(”fox”£?X);;显示结果为0
?AT(”o”£?X);;显示结果为9
?AT(”o”£?X£?2);;显示结果为13
2)取左子串函数LEFT()
【格式】LEFT(,)
2)取左子串函数LEFT()
【格式】LEFT(,)
【功能】返回从cExp串中第一个字符开始,截取nExp个字符的子串。
3)取右子串函数RIGHT()
【格式】RIGHT(,)
【功能】返回从cExp串中右边第一个字符开始,截取nExp个字符的子串。
4)取子串函数SUBSTR()
【格式】SUBSTR(,[,])
【功能】返回从串cExp中第nExp1个字符开始,截取nExp2个字符的子串。
【例】CN=”ABCDEFG”? SUBSTR(CN,4,2),SUBS(CN,1,4),SUBS(CN,6,3)DEABCD FG若省略〈长度〉,或者〈长度〉超过从〈起始位置〉到末尾的长度,则截取的子字符串为从〈起始位置〉到〈字符串表达式〉末尾的所有字符。例如:?SUBSTR(”计算机程序设计
教程”,11)设计
教程5)字符串长度函数LEN()
【格式】LEN()
【功能】返回cExp串的字符数(长度)。函数值为N型。
【例】?LEN(”Visual FoxPro8.0”)16
6)删除字符串前导空格函数LTRIM()
【格式】LTRIM()
【功能】删除cExp串的前导空格字符。
7)删除字符串尾部空格函数RTRIM()|TRIM()
【格式】RTRIM|TRIM()
【功能】删除cExp串尾部空格字符。
8)空格函数SPACE()
【格式】SPACE()
【功能】返回一个包含nExp个空格的字符串。
【例】X=SPACE(2)+”学生情况”+SPACE(4)?LEN(X),LEN(TRIM(X)),LEN(LTRIM))14 10 12
9)字符串替换函数STUFF()
【格式】STUFF(,,,)
【功能】从nExp1指定位置开始,用cExp2串替换cExp1串中nExp2个字符。
【例】X1="ABCDEFG"
X2="abcd"?STUFF(X1,4,3,X2),STUFF(X1,1,4,X2)
ABCabcdG abcdEFG
10)大小写转换函数LOWER()和UPPER() 【格式】LOWER()
UPPER()
【功能】LOWER()将cExp串中字母全部变成小写字母,UPPER()将cExp串中字母全部变成大写字母,其它字符不变。
11)字符匹配函数LINK()
【格式】LIKE(,)
【功能】比较两个字符串对应位置上的字符,若所有对应字符都相匹配,函数返回逻辑真(.T.),否则返回逻辑假(.F.)
【说明】中可以使用通配符*和?。*可以与任何数目的字符相匹配,?可以与任何单个字符相匹配。
【例】X=“abc” Y=“abcd”
?LIKE(X,Y),LIKE(“ab*”,X),LIKE(“a*”,Y),LIKE(“?b”,X)
.F..T..T..F.(3)日期时间函数(p73)
日期时间函数是处理日期型或日期时间型数据的函数。其自变量为日期型表达式dExp或日期时间型表达式tExp。
1)系统日期函数DATE()
【格式】DATE()
【功能】返回当前系统日期,此日期由系统设置。函数值为D型。
2)系统时间函数TIME()
【格式】TIME([])
【功能】返回当前系统时间,时间显示格式为hh:mms。是以24小时指制表示的。函数值为C型。
3)日期函数DAY()
【格式】DAY()
【功能】返回指定的dExp式中的天数。函数值为N型
4)星期函数DOW()、CDOW()
【格式】DOW()
CDOW()
【功能】DOW()函数返回dExp式中星期的数值,用1~7表示星期日~星期六。函数值为N型。CDOW()函数返回dExp式中星期的英文名称。函数值为C型。
5)月份函数MONTH()、CMONTH()
【格式】MONTH()
CMONTH()
【功能】MONTH()函数返回dExp式中月份数。函数值为N型。CMONTH()函数则返回月份的英文名。函数值为C型。
6)年份函数YEAR() 【格式】YEAR()
【功能】函数返回dExp式中年份值。函数值为N型。(4)转换函数
在
数据库应用的过程中,经常要将不同数据类型的数据进行相应转换,满足实际应用的需要。Visual FoxPro系统提供了若干个转换函数,较好地解决了数据类型转换的问题。
1)ASCII码函数ASC()
【格式】ASC()
【功能】返回cExp串首字符的ASCII码值。函数值为N型。
【例】?ASC(“abc”);;结果为:97
2)ASCII字符函数CHR()
【格式】CHR()
【功能】返回以nExp值为ASCII码的ASCII字符。函数值为C型。
【例】?CHR(99);;结果为:c
3)字符日期型转换函数CTOD()
【格式】CTOD()
【功能】把“××/××/××”格式的cExp串转换成对应日期值。函数值为D型。
【例】DA=”12/12/99”
?CTOD(DA)
12/12/99
4)日期字符型转换函数DTOC()
【格式】DTOC([,1])
【功能】把日期dExp转换成相应的字符串。函数值为C型。
【例】D={^2004/11/24}
DT=DTOC(D)
?DT
??LEN(DT)
11/24/04 85)数值转换成字符串函数STR()
【格式】STR([,][,])
【功能】将nExp1的数值转换成字符串形式。函数值为C型。
【例】?STR(1324.46,6,1)1324.5
?STR(1324.46,8,3),STR(1324.46,3,1)1324.460***
注:如果长度小于的位数则返回一串*号。
6)字符串转换成数值函数VAL() 【格式】VAL()
【功能】将cExp串中数字转换成对应数值,转换结果取两位小数。函
数值为N型。【例】?VAL(”32”+”18”)3218.00
?VAL(”112GH”),VAL(”AB204”),VAL(”ASD”)112.00 0.00 0.00
7)宏代换函数;
【格式】;<字符型
内存变量>
【功能】取“字符型内存变量”的值。
【说明】
(1)宏代换是一种间接取值的操作,在;符号后面必须紧跟(无空格)一个己被赋过值的字符型内存变量的名字。
(2)若;<字符型内存变量>与后面的字符之间无空格分界时,应加上“.”符号作为分界符。
(3)宏代换的使用可以嵌套另一个宏代换,但不能嵌套自己。例如,X=“;X”的写法是错误的。
(4)对于数字字符串,可以通过;函数使其与其他数字进行计算。
【例】求宏代换。
<1>CH=”X”
X=9
?;CH;;结果为:9
<2>TT=”学生”
USE;TT;;结果为:打开了“学生.dbf”表文件。
<3>X=”2004”
M=”+”
Y=”;X.;M.1”
?Y;;结果为:2004+1
?;Y;;结果为:2005(5)测试函数
在
数据库应用的操作过程中,用户需要了解数据对象的类型、状态等属性,Visual FoxPro提供了相关的测试函数,使用户能够准确地获取操作对象的相关属性。
1)数据类型函数VARTYPE()
【格式】VARTYPE(<表达式>)
【功能】返回<表达式>表示的数据对象的数据类型,返回值是一个表示数据类型的大写字母。C:字符型,D:日期型,N:数值型,L:逻辑型,M:备注型,G:通用型,U:未定义