返回上一页
序号 函数格式 功能 说明 举例
1 ABS(nExpression)
返回指定数值表达式的绝对值
参数 nExpression 指定需由 ABS() 返回绝对值的数值表达式。 ? ABS(-45) && 显示 45
? ABS(10-30) && 显示 20
? ABS(30-10) && 显示 20
STORE 40 TO gnNumber1
STORE 2 TO gnNumber2
? ABS(gnNumber2-gnNumber1) && 显示 38
2 INT(nExpression) 计算一个数值表达式并返回该表达式的整数部分 参数 nExpression 指定要 INT( ) 返回其整数部分的数值表达式。 CLEAR
? INT(12.5) && 显示 12
? INT(6.25 * 2) && 显示 12
? INT(-12.5) && 显示 -12
STORE -12.5 TO gnNumber
? INT(gnNumber) && 显示 -12
3        
         
         

 

1.字符运算函数

字符运算函数指函数运算功能与字符型数据有关的函数,在这类函数中自变量大多都是字符型数据。字符串括号可选用双引号″″、单引号 、方括号[ ]之一均可。

1.字符串检索函数

函数格式:AT(〈字符串1〉, 〈字符串2〉[,〈算术表达式〉])

函数功能:检索字符串1在字符串2中从左边数第N(算术表达式值为N)次出现的位置数值。未选算术表达式项,默认值为1,位置从字符串2左边计数。

若字符串1在字符串2中未出现,返回值为0。

例如:?AT(‘UNIVERSITY’, ‘NORTHWEST UNIVERSITY’) 结果为11

     ?AT(‘T’, ‘NORTHWEST UNIVERSITY’,2) 结果为9

函数格式:RAT(〈字符串1〉, 〈字符串2〉[,〈算术表达式〉])

函数功能:检索字符串1在字符串2中从右边数第N(算术表达式值为N,默认值为1)次出现的位置数,位置从字符串2左边计数。

若字符串1在字符串2中未出现,返回值为0。

例如:?RAT(′UNIVERSITY′, ′NORTHWEST UNIVERSITYUNIVERSITY′) 结果为21

2.求串长函数

函数格式:LEN(〈字符串表达式>〉

函数功能:可计算出字符串表达式所表示的字符串中的字符个数,结果值是一正整数。

字符串表达式形式可为字符串,也可是字符型的字段变量或者是字符型内存变量。

例如:STORE “王小红” TO 姓名

      ?LEN (姓名)

系统回答:姓名这个内存变量存储的字符串长度为6

3.求出现次数的函数

函数格式:OCCURS(〈字符串1〉, 〈字符串2>〉)

函数功能:可计算出字符串表达式1在字符串2中出现次数,结果值是一正整数。

例如:  ?OCCURS(‘T’, ‘NORTHWEST UNIVERSITY’) 结果为3

4. 取子串函数

函数格式:SUBSTR(〈主字符串〉,〈子串开始位置〉〔,〈子串字符个数〉〕)

函数功能:从主字符串中取一子串。其中,第一参数可是字符型的字段变量或内存变量或字符常量,第二参数用以指定子串的开始位置,第三参数用以指定子串长度。当第二项值大于字符串中字符个数时,则得到一空串。当子串长度大于起始位置到串结束的宽度时,子串取到主串结束为止。若省略第三项时,则从起始位置开始,取到主串结尾为止。

例:? SUBSTR(“世界经济”,5,4)

结果为:经济        (显示子串的结果) 

5. 压缩空格函数

函数格式:TRIM 〈字符串表达式〉同RTRIM〈字符串表达式〉

函数功能:删除字符串尾部空格。

例:假定“系名”字段宽度为10位,

TRIM(系名+班级)

经济系    会计98班

(结果中系名占10个字符的位置,不满则右补空)

6.大/小写字母转换函数

函数格式:UPPER(〈字符型表达式〉)

          LOWER(〈字符型表达式〉)  

函数功能:UPPER函数将(字符型表达式)所表示的字符串中的字母都变成大写, LOWER函数则将(字符型表达式)所表示的字符串中的字母都变成小写。

例: ? UPPER(‘This is a school’)

THIS IS A SCHOOL  结果已将字符串中所有字母都变成了大写字母。

7.空格生成函数

函数格式:SPACE(〈数字表达式〉)

函数功能:生成一个由空格字符组成的字符串,空格字符的个数由数字表达式的值确定,且产生的空格个数不大于254。

例如: ? ‘中国’+SPACE(5)+ ‘西安

    中国     西安    (在中国和西安之间插入5个空格)

函数格式: REPLICATE(<字符表达式>,〈数字表达式〉)

函数功能:将字符表达式重复N次并生成一个字符串返回。

REPLICATE (”_”,40)   结果生成40个下划线的字符串。

8.宏替换函数&

函数格式:&<字符变量>

函数功能:取字符变量内容

例如:X=’西大

P = ’&X同学们,新年好!’       (P的内容为:西大同学们,新年好!)

2.数学运算函数

数学运算函数的特点是参加运算的自变量是数值型变量,得到的结果是数值常数。这里只介绍最常用的6个函数。

1.取整函数INT

函数格式:INT(〈算术表达式〉)

函数功能:先计算算术表达式的值,只取它的整数部分。

例:STORE 127.456  TO X    (X内存变量内容127.456)

    ? INT(X)

    127    (显示取整后内容为127)

2.四舍五入函数ROUND

函数格式:ROUND(〈算术表达式〉,〈保留小数位i〉)

函数功能:先计算算术表达式的值,再对保留小数位后的小数进行四舍五入处理。即当保留位数i> 0,则保留i位小数,第i+1位四舍五入处理。当保留位数i=0,则对第一位小数四舍五入取整数。当保留位数i<0,取i的绝对值作为原数整数部分舍入的位数。

例:? ROUND (14.745321,2)

   结果是 14.750000    (对14.745321保留2位小数,结果为14.75)

3.取模函数MOD

函数格式:MOD(〈算术表达式1〉,〈算术表达式2〉)

函数功能:求〈算术表达式1〉除以〈算术表达式2〉的余数。

注意:余数的符号和〈算术表达式2〉相同,即除数值>0,余数为正, 除数值<0,余数为负。

例:? MOD(100,3)   结果为1

   ? MOD(100,-3)   结果为-2

注:如果被除数与除数不能整除,且被除数与除数异号,则结果为被除数除以除数而得到的余数再加上除数,即MOD(x1,x2)=x1-INT(x1/x2)*x2+x2。

4. 符号函数SIGN

函数格式:SIGN(〈算术表达式〉)

函数功能:根据〈算术表达式〉的计算结果返回不同的函数值。值大于0,函数结果为1;值等于0,函数结果为0;值小于0,函数结果为-1。

5. 随机函数RAND()

函数格式:RAND()

函数功能:产生一个0-1之间的随机数。

问题:若需要产生10-20之间的随机数该如何做?

3.日期与时间函数

此类函数涉及到与日期、时间有关的运算。

下面函数举例中的当前日期以2003年11月20日为准。

1.系统日期函数DATE

函数格式:DATE()

函数功能:给出引导操作系统时置入的日期,格式为MM/DD/YY,其中MM表示月份,DD表示日 ,YY表示年,都是两位数。

例:?DATE()    显示结果为11/20/03。

2.月份名函数CMONTH

函数格式:CMONTH(〈日期型表达式〉)

函数功能:给出日期型表达式所表示日期中月份名字。在西文FoxPro中,显示为英文的月份名,在中文版的VisualFoxPro,显示结果为汉字的月份名。

例:?CMONTH(DATE(  )) 结果为: November

3.月份数函数MONTH

函数格式:MONTH(〈日期型表达式〉)

函数功能:求出日期表达式中月份的数字,此函数与上面求月份名函数的区别在于,一个结果类型为数字,一个结果类型为字符。

例:?MONTH(DATE(  )) 结果为:11

4.星期几函数CDOW/DOW

函数格式:CDOW(〈日期型表达式〉) DOW〔〈日期型表达式〉〕   

函数功能:CDOW给出星期几的英文名(或汉字的星期几),而DOW则给出星期几的数字。特别注意,星期几的数字排列的顺序与我们习惯的表示有所不同,星期日到星期六分别表示1、2 、3、4、5、6、7。

例:? CDOW(DATE (  ))     结果为:Thursday

    ? DOW(DATE (  ))     结果为:5

5.日期函数DAY

函数格式:DAY(〈日期型表达式〉)

函数功能:可给出日期型表达式所表示的日期号,其表达式范围为1~31。

例:? DAY(DATE (  ))    结果为:20

6.年份函数YEAR

函数格式:YEAR(〈日期型表达式〉)

函数功能:可求出日期型表达式的年份值,结果年份为数值类型且用四位数字表示。

例: ? YEAR (DATE(  ))    结果为:2003

7.系统时间函数TIME

函数格式:TIME(  )

函数功能:可按时∶分∶秒(即hh∶mm∶ss)的形式显示系统当前时间,系统时钟的初值可在引导操作系统时由人工设置。

4.转换函数

转换函数有三类,字符与对应的ASCII码间的转换;数值型与字符型间的转换;字符型与日期型间的相互转换。下面就三类转换的6种函数逐一介绍。

1.字符与ASCII码转换函数ASC

函数格式:ASC(〈字符型表达式〉)

函数功能:求出此字符型表达式所表示的字符串左边第一个字符对应的ASCII码值。ASCII码值是以十进制表示的,故函数的结果为数值型。

例:? ASC (‘A’)    结果是65

? ASC (‘ABC’)结果是65(串的头字符A,故与上函数值相同)

2.ASCII码值对其字符转换函数CHR

函数格式:CHR(〈算术表达式〉)

函数功能:计算出算术表达式的值,其值要求是0~255之间的整数。再将该数转换成其对应的ASCII字符,故此函数值为字符型。

例:? CHR (65)       结果是A

3.数值型转换成字符型函数

函数格式:STR(〈数字型表达式〉(,〈长度〉)(,〈小数位数〉))

函数功能:把数值型表达式的值转换成字符型数据。其中,“长度”项决定输出字符串的字符个数,包括小数点和小数部分,“小数位数”决定小数部分输出的位数,如无此项,原数据中的小数部分将被舍弃。若“长度”项规定的长度不足以表示该数,结果将输出一串“* ”。

    例:? STR(153.7,5,1)        结果是: 153.7    (类型为字符型)

4.字符串转换为数值函数VAL

函数格式:VAL(〈字符串〉)

函数功能:将由数字、正负号、小数点组成的字符串转换成数值。转换结果是该串左起有数值意义的部分。当字符串全是非数字字符时,函数值为0;当字符串前面为数值形式而字符后面为非数字字符时,函数从左截取串中数字的部分转换成数值。

    例:? VAL(‘B=12’)   结果是:0    (因为左部非数字)

        ? VAL(‘587ABFV’)    结果是:587

5.  字符型转换为日期型函数CTOD

函数格式:CTOD(〈字符型表达式〉)

函数功能:把字符串转换成日期型数据,其中字符串必须是mm/dd/yy的月日年顺序,若字符串的内容与合法日期不符,则结果值为日期型的定义格式:    /    /    。

例:T=CTOD (‘11/02/03’)

    ? T+10

    结果是:11/12/03  

由此例可看出,T 是日期型的,日期型中的加是天数的运算,故能按天加,并自动变动月份年份值。注意,日期型内存变量只能借助CTOD函数或{ }格式来定义。

6.日期型转换成字符型函数DTOC

函数格式:DTOC(〈日期型表达式〉)

函数功能:把日期型数据转换成字符型数据。

例:? DATE(  )结果是 11/20/03

? DTOC(DATE(  ))+ ‘10’

结果是:11/20/0310    (因为是字符型数据连接,故是字符型运算)  

5.状态检验函数

此类函数又叫测试函数,利用它们可以掌握系统的某些实时状态。状态检验函数在管理系统程序设计中非常有用。常用的状态检验函数可分为与库文件有关的函数,表达式类型函数,打印机屏幕位置有关的函数。

1.文件存在测试函数FILE

函数格式:FILE(‘〈文件名〉’)

函数功能:引号中指定的文件名若存在,函数值为 .T.,否则给出逻辑值为 .F.,文件名的扩展名不能缺省。

例:现有名为“LLTJ.DBF”的文件在A驱动器软盘里。

? FILE (“A:LLTJ.DBF”) 结果为 .T.

? FILE(“C:LLTJ.DBF”)  结果是 .F.

2.文件起始测试函数

函数格式:BOF(  )      

函数功能:测试当前记录是否为库文件的开始标志,若是则返回值为 .T.,否则返回值为 .F.。例:设GZ.DBF为非空数据库

USE GZ&&打开GZ数据库

? BOF(  ) 结果为 .F.  (打开库当前记录为第一记录处)

SKIP -1     (指针上退一个记录)

? BOF(  )    结果是 .T. (当前指针指向文件开始标志)   

由上面例子可以看出,此函数可测试当前记录指针反向定位时是否移过库文件中的第一个记录,若移过则函数值为真,反之为假,因而这个函数特别适用于进行逆序查找库文件记录,以BOF(  )为真做为查找过程的终止条件。

3.文件结束测试函数EOF(  )

函数格式:EOF(  )

函数功能:当前记录指针指向库文件结束标志,此函数值为真,反之为假。类似文件开始标志测试,此函数测试正向定位时当前记录指针是否越过库文件中最末记录。

例:设GZ数据库共有10个记录

 USE GZ.

 GOTO 10

 ? EOF(  ).    结果为 .F.

 SKIP

 ? EOF(  )    结果为 .T.   

4.记录删除标记测试函数

函数格式:DELETED(  )

函数功能:测试当前记录是否带有删除标志。若当前记录已打上删除标志,函数值为.T., 否则为.F.。(记录删除标志是通过DELE句子置入)

例:USE gz

? DELETED(  )  结果为 .F.    (表示第一记录未有删除标志)

DELETE    (给当前记录加删除标志)

主窗口出现: 1  record deleted    (1记录被删除)

? DELETED(  )  结果为 .T.

5.当前记录号函数

函数格式:RECNO( {<expN>} )

函数功能:无可选项,给出打开数据表的当前记录序号。有可选项, 给出<expN>号工作区打开表的当前记录序号。

若表文件中无记录,则函数值为1。打开表文件时 ,当前指针指出第一个记录。

例:USE  A:GZ

? RECNO(  )

GOTO 10

? RECNO(  ) 结果是: 10

SKIP

主窗口出现提示:记录超出范围(因只有10个记录)

6.表文件记录总数函数

函数格式:RECCOUNT({<expN>})

函数功能: 无可选项,给出当前打开表的记录总数。有可选项, 给出<expN>号工作区打开表的记录总数。

7.表文件字段数目函数

函数格式:FCOUNT({<expN>})

函数功能: 无可选项,给出当前打开表的字段个数。有可选项, 给出<expN>号工作区打开表的字段数。

以上7种函数都与表文件有关。

8.屏幕行坐标函数

函数格式:ROW(  )

函数功能:给出当前屏幕光标所处位置的行坐标

例:? ROW(  )  结果为 3

@ ROW(  )+2,10  say  “12345”

1 2 3 4 5      (在第5行第10列显示)

? ROW(  ) 结果为  5

9.屏幕列坐标函数

函数格式:COL(  )

函数功能:给出屏幕上光标位置的列坐标。