对于函数需要大家了解的有:
1、函数名
2、除了&宏函数外,所有函数必须加 ()
3、函数的作用
4、函数的参数
5、函数的返回值及其类型
数值运算函数: INT()、ABS()、MAX()、MIN()、SQRT()、ROUND()、MOD()
字符处理函数: LEN()、AT()、SPACE()、SUBSTR()、LEFT()、RIGHT()
TRIM=RTRIM(TRIM\\ALLTRIM\\LTRIM\\RTRIM)、STUFF()、&:宏函数
转换函数: LOWER()、UPPER()、CTOD()、DTOC()、STR()、VAL() ASC()、CHR()
日期时间函数: DATE()、TIME()、YEAR()、MONTH()、DAY()
测试函数: RECNO()、BOF()、EOF()、FOUND()、FILE()、DBF()、RECCOUNT()、SELECT()、TYPE()、IIF()、
其它:ROW()、COL()、INKEY()、READKEY()
1.数值处理函数
(1)求绝对值函数ABS()
【格式】 ABS(<数值表达式>)
【功能】 返回<数值表达式>的绝对值,参数的类型为N型,得到的函数值的类型为N型。
【例如】
输入语句:?ABS(-26.2),ABS(26.6),ABS(-50)
显示结果: 26.2 26.6 50
注意:语句 ? <内存变量>|<常量>|<表达式>是非格式输出语句,具有计算功能。语句在命令窗口输入。
(2)求指数函数EXP()
【格式】EXP(<数值表达式>)
【功能】返回以e为底,<数值表达式>为幂次的指数值。
【例如】
输入语句:?EXP(5.5),EXP(1),EXP(-5),EXP(-6)
显示结果: 244.69 2.72 0.01 0.00
(3)取整函数INT()
【格式】 INT(<数值表达式>)
【功能】 返回<数值表达式>的整数部分。
【例如】
输入语句:?INT(26.2),INT(26.9),INT(-26.2),INT(-26.9)
显示结果: 26 26 -26 -26
(4)求对数函数LOG()
【格式】LOG(<数值表达式>)
【功能】返回<数值表达式>的自然对数值。
【说明】<数值表达式>值必须大于零。
【例如】
输入语句:?LOG(16.5),LOG(10),LOG(1)
显示结果: 2.80 2.30 0.00
(5)求最大值函数MAX()
【格式】MAX(<表达式1>,<表达式2>[,<表达式3>…])
【功能】返回表达式串<表达式1>,<表达式2>[,<表达式3>…]中的最大值。
【说明】这些表达式必须具有相同数据类型(可以同是字符、数值或日期)。
【例如】
输入语句:?MAX(-23,3.56),MAX('BOOK','PEN','READ')
显示结果: 23 READ &&比较字符的ASCII大小
(6)求最小值函数MIN()
【格式】MIN(<表达式1>,<表达式2>)
【功能】返回表达式串<表达式1>,<表达式2>[,<表达式3>…]中的最小值。
【说明】这些表达式必须具有相同数据类型(可以同是字符、数值或日期)。
【例如】
输入语句:?MIN(-23,3.56,12.8,23.1),MIN('BOOK','PEN','READ')
显示结果: -23
BOOK
(7)求平方根SQRT()
【格式】SQRT(<数值表达式>)
【功能】返回<数值表达式>的平方根。
【说明】<数值表达式>的值必须为正数或零。
【例如】
输入语句:?SQRT(25.9),SQRT(8*8),SQRT(ABS(-36))
显示结果: 5.09 8.00 6.00
(8)求四舍五入函数ROUND()
【格式】ROUND(<数值表达式1>,<数值表达式2>)
【功能】返回<数值表达式1>按<数值表达式2>所指定的保留小数位数进行四舍五入的值。若<数值表达式2>的值为负,则返回小数点左边为<数值表达式2>绝对值个数零的整数值。
【例如】:
输入语句:?ROUND(68.345,2),ROUND(68.745,0),ROUND(68.345,-1),ROUND(68.345,-2)
显示结果: 68.35 69 70 100
注意:在执行函数ROUND(68.345,-1)时,小数点左边的数是两位68,由于参数2为-1,则返回值是整数且应带一个0,故经四舍五入后,8进位到6则首位变为7,第二位按规定是0。所以该函数的返回值是70。
(9)求余函数MOD()
【格式】MOD(<数值表达式1>,<数值表达式2>)
【功能】返回<数值表达式1>除以<数值表达式2>的余数。
【说明】mod(a,b):当a,b 同号时,结果为b的符号
当a,b 异号时,值为a/b的余数(符号为a的符号)+b
【例如】
输入语句:?MOD(25,4),MOD(25,-4),MOD(-25,4),MOD(-25,-4)
显示结果: 1 -3 3 -1
2.字符处理函数
(1)宏代换函数&
【格式】&<字符型内存变量>[.<字符表达式>]
【功能】在字符型内存变量前使用&,将用该内存变量的值去替换&和内存变量名.
此外,利用可选的句号分隔符“.”及<字符表达式>,还可将额外的<字符表达式>值添在其尾端,
而且<字符表达式>本身也可以是一个宏。即用该内存变量的内容替换&<内存变量名表>.
也可以理解为&<字符型内存变量>的作用是"去掉一重定界符"
【例如】输入下列语句序列
输入语句序列:N="1"
M="2"
X12="COMPUTER"
?X&N.&M
显示结果:COMPUTER
注意:赋值语句的功能是将表达式的值送到变量中。
【例如】x=2
y=3
z="x+y"
?&z*2 <=>?x+y*2
8
z="(x+y)"
?&z*2 <=>?(x+y)*2
10
(2)测试字符串长度函数LEN()
【格式】LEN(<字符表达式>)
【功能】返回<字符表达式>值的字符个数。<字符表达式>可以是一个字符串、备注字段或字符类型字段。若<字符表达式>为一空字符串,则返回数值零。
【例如】
输入语句:?LEN("Append Blank")
显示结果:12
(3)求子串起始位置函数AT()
【格式】AT(<字符表达式1>,<字符表达式2>[,<数值表达式>])
【功能】 返回<字符表达式1>第一次出现在<字符表达式2>中的整数位置值(从左到右计数)。若<字符表达式1>未出现在<字符表达式2>中,则返回零值。如果有可选项<数值表达式>,则在<字符表达式2>中从<数值表达式>值代表出现<字符表达式1>的次数开始查找。
【例如】
输入语句:?AT("d),AT("R)
显示结果: 0 5
(4)产生空格函数SPACE()
【格式】SPACE(<数值表达式>)
【功能】返回一个由<数值表达式>值确定的空格组成的字符串。
【例如】
输入语句:?"INPUT"+"DATA"
?"INPUT"+SPACE(5)+"DATA"
显示结果:INPUTDATA
INPUT□□□□□DATA
(5) 截子串函数SUBSTR()
【格式】SUBSTR(<字符表达式>,<数值表达式1>[,<数值表达式2>])
【功能】返回<字符表达式>中,从<数值表达式1>值开始,由<数值表达式2>值指定个数的字符串。如果无<数值表达式2>选项,则从<数值表达式1>值位置开始直到<字符表达式>值尾部。
【例如】
输入语句:X="OUTPUT UNIT"
?SUBSTR(X,4,3),SUBSTR(X,1)
显示结果: PUT OUTPUT UNIT
(6) 左截子串函数LEFT()
【格式】LEFT(<字符表达式>,<数值表达式>)
【功能】返回从<字符表达式>最左边计起的<数值表达式>值个字符。
【例如】
输入语句:?LEFT("INPUT UNIT",5)
显示结果:INPUT
(7) 右截子串函数RIGHT()
【格式】RIGHT(<字符表达式>,<数值表达式>)
【功能】返回从<字符表达式>最右边计起的<数值表达式>值个字符。如果<数值表达式>值小于或等于零,则返回空字符串。
【例如】
输入语句:?RIGHT("INPUT□UNIT",5) &&□表示空格
显示结果:□UNIT
(8) 删除字符串前置空格函数LTRIM()
【格式】LTRIM(<字符表达式>)
【功能】返回删除了<字符表达式>的前置空格的字符串。
【例如】输入下列语句序列(□表示空格)
X="计算机□□□□"
Y="□□应用"
?LTRIM(X+Y)
?LTRIM(X)+LTRIM(Y)
显示结果:计算机□□□□□□应用
计算机□□□□应用
(9)删除字符串尾部空格函数TRIM()
【格式】TRIM(<字符表达式>)
【功能】返回删除了<字符表达式>的尾部空格的字符串。
【例如】输入下列语句序列
X="计算机□□□□"
Y="应用□□"
?TRIM(X+Y)
?TRIM(X)+TRIM(Y)
显示结果:计算机□□□□应用
计算机应用
(10) 删除字符串前置空格及尾部空格函数ALLTRIM()
【格式】ALLTRIM(<字符表达式>)
【功能】返回删除了<字符表达式>的前置空格及尾部空格的字符串。
【例如】输入下列语句序列
X="计算机"
Y=" 应用"
?ALLTRIM(X+Y)
?ALLTRIM(X)+ALLTRIM(Y)
显示结果:计算机 应用
计算机应用
(11)计算子串出现次数函数
【格式】OCCURS(<字符表达式1>,<字符表达式2>)
【功能】返回<字符表达式1在<字符表达式2中出现的次数.
【例如】
store "abcaba" to s
?OCCURS("a",s)
3
(12)字符替换函数
【格式】CHRTRAN(<字符表达式1>,<字符表达式2>,<字符表达式3>)
【功能】
【例如】?CHRTRAN("ABACAD
XBX1X2
?CHRTRAN("会计学123会计学金融")
金融123
(13) 小写字母转大写字母函数UPPER()
【格式】UPPER(<字符表达式>)
【功能】将<字符表达式>中的所有小写字母转换成大写字母,其它字符不变。
【例如】
输入语句:?UPPER("abcdefg")
显示结果:ABCDEFG
(14)大写字母转小写字母函数LOWER()
【格式】LOWER(<字符表达式>)
【功能】将<字符表达式>中的所有大写字母转换成小写字母,其它字符不变。
【例如】
输入语句:?LOWER("AbCdEfG")
显示结果:abcdefg
3 转换函数
(1)CTOD()函数
【格式】CTOD(<日期格式字符表达式>)
【功能】将<日期格式字符表达式>转换成日期型的值。
【例如】
输入语句:?CTOD("12/10/99")
?Ctod("99/12/10")
显示结果:12/10/99
/ /
注意:
<日期格式字符表达式>的默认格式必须是:月/日/年或月-日-年 (其中年可以是2位也可以是4位),若是:年-月-日或年/月/日格式将得到一个值: / /,当然也可使用命令set date to 命令修改日期格式(参见第五章Set Date to命令或“工具”菜单下的“选项”中的“区域”设置)。
输入语句:Set Date to ymd &&设置日期格式为:年-月日
D1=CTOD("2003/10/01")
?D1
D2=CTOD("10-01-2001")
?D2
显示结果: 03/10/01
/ /
(2)DTOC()函数
【格式】DTOC(<日期型表达式>[,1])
【功能】将<日期型表达式>转换成日期格式字符串。<日期型表达式>可以是系统日期函数、内存变量或数据库字段。有可选项[,1],则与DTOS()函数功能相同。
【例如】
输入语句:?LEN(DTOC(DATE()))
显示结果:8 &&09/28/01这个结果也和系统日期的格式有关
(3)STR()函数
【格式】STR(<数值表达式1>[,<数值表达式2>[,<数值表达式3>]])
【功能】先计算<数值表达式1>的值,然后将此值转换成长度为<数值表达式2>(如果指定了<数值表达式2>)的字符串;如果指定了<数值表达式3>,则此字符串在小数点右边有<数值表达式3>个数字字符。<数值表达式2>包括整数个数、小数点及右边的小数数字个数。
【说明】
数值表达式2确定返回字符串的长度(小数点和负号各占1位),当长度大于实际数值的位数时间,则在字符串的前面补上相应个数(表达式2-实际长度)个空格,若表达式2的值比表达式1的整数部分的长度还小时,则输出的字符串为表达式2个*;当输出的小数位数比实际的小数位数大时,则在字符串后补相应个0,当小数位数小于实际位数时,小数位数自动按四舍五入处理。数值表达式3缺省只输出表达式1的整数部分;若同时缺省表达式2在字符串前补相应个数0到10位字符数据。
【例如】
输入语句:?STR(99.91,4,1),STR(199.91,4,1),STR(9999.91,4,1)
显示结果:99.9 200 ****
(4)VAL()函数
【格式】VAL(<字符表达式>)
【功能】从<字符表达式>的最左边字符开始,在忽略前置空格的情形下由左向右将阿拉伯数字字符转换成数值,直到遇到一个非数字字符为止。如果<字符表达式>的第一个字符不是阿拉伯数字,则VAL()函数返回数值零。
【例如】
输入语句:?VAL(" 99.99ABC888"),VAL("A101")
显示结果:99.99 0.00
(5)ASCII字符对应数值函数ASC()
【格式】ASC(<字符表达式>)
【功能】返回<字符表达式>值最左边字符对应的ASCII码(十进制)。
【例如】
输入语句:?ASC("a computer"),ASC("Append")
显示结果: 97 65
(6)求数值对应的ASCII字符函数CHR()
【格式】CHR(<数值表达式>)
【功能】返回<数值表达式>值对应的ASCII字符。
【例如】
输入语句:?CHR(65),CHR(33),CHR(65+32)
显示结果: A ! a
4 日期函数
(1)DATE()函数
【格式】DATE( )
【功能】返回当前的系统日期。返回的日期格式可用SET CENTURY、SET DATE TO命令来更改。
【例如】
输入语句:set century on &&显示日期带世纪的两位数
?DATE()
显示结果:2002-07-21
(2)TIME()函数
【格式】TIME( )
【功能】返回当前的系统时间。返回值为字符型.
例如:
输入语句:?TIME()
显示结果:14:29:58
(2)YEAR()函数
【格式】YEAR(<日期表达式>)
【功能】返回以数值类型表示的<日期表达式>所代表的公元4位年份。<日期表达式>可以为系统日期函数、内存变量或数据库字段。
【例如】
输入语句:D1=CTOD("12-30-99")
?YEAR(D1)
D1=CTOD("10-01-2001")
?YEAR(D1)
显示结果:1999
2001
(3)MONTH()函数
【格式】MONTH(<日期表达式>)
【功能】返回以数值类型表示的<日期表达式>所代表的月份。<日期表达式>可以为系统日期函数、内存变量或数据库字段。
【例如】
输入语句:D1=CTOD("12-30-99")
?MONTH(D1)
显示结果:12
(4)DAY()函数
【格式】DAY(<日期表达式>)
【功能】返回以数值类型表示的<日期表达式>所代表该月的第几日。
【例如】
输入语句:D1=CTOD("12-30-99")
?DAY(D1)
显示结果:30
(5)求时分秒的函数()
hour(<日期时间表达式>)参教材
minute(<日期时间表达式>)
sec(<日期时间表达式>)
5.测试函数
(1)值域测试函数 between(<表达式1>,<表达式2>,<表达式3>) 返回值为逻辑值.
(2)空值测试函数 isnull(<表达式>) 返回值为逻辑值.
(3)测试类型函数
【格式】VARTYPE(<表达式>)
【功能】返回表达式的类型。
【例如】
输入语句:?VARTYPE(12*2),VARTYPE(.F.),VARTYPE(".F."),VARTYPE(date()),VARTYPE(K1)
显示结果:N L C D U
(4)条件赋值函数IIF()
【格式】IIF(<逻辑表达式>,<表达式1>,<表达式2>)
【功能】按<逻辑表达式>的逻辑值决定返回<表达式1>的值或<表达式2>的值。若<逻辑表达式>的逻辑值为真,则返回<表达式1>的值,若<逻辑表达式>的逻辑值为假,则返回<表达式2>的值。
【例如】
输入语句:
x=4
?IIF(x>0,1,-1)
显示结果:1
(5)测试当前记录号函数
【格式】RECNO([<工作区号或别名>])
【功能】返回值当前工作取区或指定工作区中打开的数据表的饿当前记录号,即记录指针当前指向的记录号。返回值为数值型(N型),缺省工作区好或别名时指当前工作区。
【例如】打开表XSDA.DBF后,将记录指针移动到第五个记录上。
输入语句:?RECNO()
显示结果: 5
(6)测试文件头函数
【格式】BOF([<工作区号或别名>])
【功能】测试当前工作区或指定工作区中数据表的记录指针是否指向第一条记录之前。返回值为逻辑型(L型)数据。若记录指针指向第一条记录之前,则返回值为.T.,否则,返回值为.F.。缺省工作区是当前工作区。
【例如】打开XSDA.dbf(设记录条数大于等于1),执行下列命令。
输入语句: Use XSDA &&打开表XSDA.DBF
?Recno()
?BOF()
Skip –1 &&将记录指针往文件头的方向移动一个记录位置
?RECNO()
?BOF()
显示结果: 1
.F.
1
.T.
(7)测试文件尾函数
【格式】EOF([<工作区号或别名>])
【功能】测试当前工作区或指定工作区中数据表的记录指针是否指向最后一条记录之后。返回值为逻辑型(L型)数据。若记录指针指向最后一条记录之,则返回值为.T.,否则,返回值为.F.。缺省工作区是当前工作区。
【例如】打开XSDA.dbf(设记录条数为8),执行下列命令。
输入语句: Use XSDA &&打开表XSDA.DBF
Go Bottom &&将记录指针指向最后一条记录
?Recno()
?EOF()
Skip &&将记录指针往文件尾的方向移动一个记录位置
?RECNO()
?EOF()
显示结果: 8
.F.
9
.T.
(8)测试查询结果函数
【格式】FOUND([<工作区号或别名>])
【功能】在使用查找命令LOCATE/CONTINUE、FIND、SEEK后测试是否在当前工作区或指定工作区中是否找到满足条件的记录,返回的值类型为逻辑型(L型),如果找到,则返回值为.T.,否则返回值为.F.,缺省工作区为当前工作区。
【例如】打开表XSDA.DBF,使用查找命令
USE XSDA
LOCATE FOR 性别=“女“ &&假设找到
?Found()
显示结果:.T.
(9)测试文件是否存在函数
【格式】FILE(<文件名>)
【功能】测试在当前的计算机系统中是否存在指定的<文件名>,返回值的类型为逻辑型(L型),如果存在,则返回.T.,否则,返回.F.。
【例如】在当前计算机系统中存在数据表XSDA.DBF。
输入语句: ?File(“XSDA.DBF”)
显示结果: .T..,缺省工作区为当前工作区。
(10)测试记录个数函数
【格式】 RECCOUNT([<工作区号或别名>])
【功能】 返回当前工作区或指定工作区中数据表的记录总数,返回的值类型为数值型(N型),缺省工作区为当前工作区。
【例如】打开表XSDA.DBF(共记录)
输入语句: USE XSDA
?RECCOUNT()
显示结果: 8
(11)选择工作区函数
【格式】SELECT([0/1/别名])
【功能】 返回当前工作区号或未使用工作区的最大编号,选0或缺省0/1/别名返回当前工作区号;选1返回未使用工作区的最大编号。返回的值类型为数值型(N型)。
【例如】设选择2号工作区,测试工作区号。
输入语句: ?SELECT()
?SELECT(1)
显示结果为: 1
32767
(12)测试光标所在列函数COL()
【格式】COL()
【功能】返回屏幕上当前光标所在的列数(0~79)。
(13)测试光标所在行函数ROW()
【格式】ROW()
【功能】返回屏幕上当前光标所在的行数(0~24)。
(14)读一键函数
【格式】INKEY([数值型表达式])
【功能】返回从键盘输入的一个键的键值。等待用户按键时间为[数值型表达式]秒钟。若[数值型表达式]为0则无限期的等待,若省略[数值型表达式]则不等待,若超过时间用户未按键,则返回0。
【例如】
输入语句:?INKEY(3)
?INKEY( )
?INKEY(0)
显示结果:97 &&从键盘输入小写字母a
0 &&不等待,直接返回0
99 &&无限期的等待,直到输入小写字母c