2.3 常用函数
函数:是用程序来实现的一种数据运算或转换。
1、系统函数的形式
函数名([形参表])
2、函数的返回值
函数经过运算所得结果称为函数的返回值(只能有一个)。
3、常用函数的分类
通常将常用的函数分为数值函数、字符处理函数、日期和时间函数、数据类型转换函数、测试函数五种。
学习函数时不仅要注意函数的名称和功能,而且还要注意函数自变量的数据类型和函数值的数据类型,这样才能正确使用每一个函数。
任何可以使用表达式的地方都可以使用函数。
1. 数值函数
1)绝对值函数
格式:ABS(<;数值表达式>)
功能:求数值表达式的绝对值
示例:
x=-2
?abs(x),abs(10+x),abs(2+x),abs(2*x)
答案:2804
2)符号函数
格式:SIGN(<;数值表达式>)
功能:返回数值表达式的值的符号,
当数值表达式的值为正、负、0时函数分别为1,-1,0。
示例:
x=3
?sign(x), sign(-1), sign(x-3)
答案:1  -1  0
3)圆周率函数
格式:PI( )
功能:返回圆周率。
示例:
s=pi()*10*10
? “s=”, s
答案:s=314.16
4)求平方根函数
格式:SQRT(<;数值表达式>)
功能:返回数值表达式值的平方根,数值表达式的值不能为负。
示例:
x=-4
y=2.22
?sqrt(abs(-4)), sqrt(10+y)
答案:2.00    3.50
5)求整数函数
格式:INT(<;数值表达式>)
功能:INT()返回数值表达式的整数部分。
示例:
x=3.9
?int(x), int(-x)
答案:3      -3
5)求整数函数
格式:ceiling(<;数值表达式>)
功能:ceiling()返回大于或等于数值表达式的最小整数。
示例:
x=3.9
?ceiling(x), ceiling(-x)
答案:4      -3
5)求整数函数
格式:floor(<;数值表达式>)
功能:floor()返回小于或等于数值表达式的最大整数。
示例:
x=3.9
?floor(x), floor(-x)
答案:3    -4
6)四舍五入函数
格式:ROUND(<;数值表达式1>, <;数值表达式2>)
功能:对数值表达式1四舍五入,保留数值表达式2的值所指定的位数。
示例:
x=123.456
?round(x, 2), round(x, 1), round(x, 0), round(x, -1)
答案:123.46    123.5    123    120
7)求余函数
格式:MOD(<;数值表达式1>, <;数值表达式2>)
功能:返回数值表达式1除以数值表达式2的余数,且余数的符号与除数相同。若数值表达式1与数值表达式2同号,函数值为两数的余数。若异号,函数值为两数的余数再加上除数的值。
示例:
x=10
?mod(x, 4), mod(x, -4), mod(-x, 4),
mod(-x, -4)
答案:2    -2        2        -2
8)求最大值函数
格式:MAX(<;数值表达式1>, <;数值表达式2>[, <;数值表达式3>……])
功能:求数值表达式1,数值表达式2,数值表达式3……中的最大值
示例:
x=10
?max(2, 10, -2, 20, 9, x)
答案:20
9)求最小值函数
格式:MIN(<
数值表达式1>, <;数值表达式2>[, <;数值表达式3>……])
功能:求数值表达式1,数值表达式2,数值表达式3……中的最小值
示例:
x=10
?min(2, 10, -2, 20, 9, x)
答案:-2
2. 字符函数
1)求字符串长度函数
格式:LEN(<;字符表达式>)
功能:返回字符表达式的长度
示例:
x=“中国哈尔滨”
y=“china”
?len(x), len(y)
答案:10      5
2)大小写转换函数
格式:LOWER(<;字符表达式>)
UPPER(<;字符表达式>)
功能:
LOWER()是将字符表达式中的大写字母转为小写字母
UPPER()是将字符表达式中的小写字母转为大写字母
示例:
x=“123study hard”
?
lower(x), upper(x)
答案:
3)空格字符串生成函数
格式:space(<;数值表达式>)
功能:返回由数值表达式值指定数目的空格
示例:
x=“We”
y=“are”
z=“students.”
?x+space(2)+y+space(2)+z
答案:
4)删除前导尾部空格函数
格式:TRIM(<;字符表达式>)
LTRIM(<;字符表达式>)
ALLTRIM(<;字符表达式>)
功能:
TRIM()将字符表达式的值的尾部空格去掉
LTRIM()将字符表达式的值的前导空格去掉
ALLTRIM()将字符表达式的值的前导与尾部空格同时去掉
示例:
a=“  中国”
b=“首都  “
c=“  北京  “
d=a+b+c
?a, b, c, d
?trim(a)+ltrim(b)+alltrim(c)
答案:
5)子串函数
格式:LEFT(<;字符表达式>,<N>)
RIGHT(<;字符表达式>, <N>)
SUBSTR(<;字符表达式>, < N1 >[, <N2>])
功能:LEFT()从字符表达式的左端开始取N个字符。
RIGHT()从字符表达式的右端开始取N个字符。
SUBSTR()从字符表达式的第N1个位置开始取N2字符。若N2省略,取到最后一个字符。
示例:
x=“中国北京首都”
?left(x, 4)+right(x, 4)+substr(x, 5, 4)
答案:
宋体6)计算子串出现次数函数
格式:OCCURS(<;字符表达式1>,<;字符表达式2>)
功能:返回<;字符表达式1>在另一个字符表达式<;字符表达式2>中出现的次数,函数值为数值型。
说明:如果在<;字符表达式2>中没有到<;字符表达式1>,则该函数返回0。
示例:
STORE ??abracadabra?? TO s
?
OCCURS(??a??,s),OCCURS(??e??,s),OCCURS(??a ??,s)
答案:5    0    0
7)求子串位置函数
格式:
AT(<;字符表达式1>,<;字符表达式2>[,<;数值表达式3>])
ATC(<;字符表达式1>,<;字符表达式2>[,<;数值表达式3>])
功能:AT()若字符表达式1为字符表达式2的子串时,则返回字符表达式1的首字符在字符表达式2中的位置。否则返回0。数值表达式3是字符表达式1在字符表达式2中第几次出现,默认值为1。
ATC()与AT()功能类似,但在子串比较时不区分字母大小写。
示例:
x=“This is computer. The computer is our friend.”
?at(“is”, x), at(“is”, x, 3), at(“The”, x), at(“THE”, x),atc((“THE”, x)
答案:
8)子串替换函数
格式:
STUFF(
<;字符表达式1>,<;起始位置>,<;长度>, <;字符表达式2>)
功能:用<;字符表达式2>值替换<;字符表达式1>中由<;起始位置>和<;长度>指明的一个子串。
替换和被替换的字符个数不一定相等。如果<;长度>值是0,<;字符表达式2>则插在由<;起始位置>指定的字符前边。如果<;字符表达式2>是空串,则<;字符表达式1>中由<;起始位置>和<;长度>指明的子串被删去。
示例:
STORE ‘GOOD BYE!’ TO s1
STORE ‘MORNING’ TO s2
?stuff(s1,6,3,s2),STUFF(s1,1,4,s2)
答案:
9)字符替换函数
格式:CHRTRAN(<;字符表达式1>,<;字符表达式2>,<;字符表达式3>)
功能:当第一个字符串中的一个或多个字符与第二个字符串中的某个字符相匹配时,就用第三个字符串中的对应字符(相同位置)替换这些字符。
如果第三个字符串中包含的字符个数少于第二个字符串包含的字符个数,因而没有对应字符,那么第一个字符串中相匹配的各字符将被删除。
如果第三个字符串包含的字符个数多于第二个字符串包含的字符个数,多余字符被忽略。
10)字符串匹配函数
格式:LIKE(<;字符表达式1>,<;字符表达式2>)
功能:比较两个字符串对应位置上的字符,若所有对应字符都相匹配,函数返回逻辑真(.T.),否则返回
逻辑假(.F.)。
注: <;字符表达式1>中可以包含通配符*和?。
示例:
STORE “abc” TO x
?LIKE(“ab*”,x),like(“?b?”,x),LIKE(“Abc”,x)
?LIKE("abchhh","ab*")
?LIKE("ab*","abchhh")
历年试题
1、表达式LEN(SPACE(0))的运算结果是( c    )
A).NULL.    B)1          C)0        D)””
2、有如下赋值语句,结果为“大家好”的表达式是(D  )
a="你好"
b="大家“
A)b+AT(a,1)                B)b+RIGHT(a,1)
C)b+LEFT(a,3,4)      D)b+RIGHT(a,2)
3、字符串长度函数LEN(“中文FOX”-SPACE(10))的值是( D        )
A)20        B)13        C)15        D)17
4、执行命令?AT(”中心”,”教育部考试中心”)的显示值是(  C        )
A )13        B)6          C)11        D)12
5、执行如下程序: ST=”VISUAL FOXPRO”
?UPPER(SUBSTR(ST,1,1))+LOWER(SUBSTR(ST,2))
屏幕的显示结果是(C      )
A)VISUAL FOXPRO            B)Visual FoxPro
C) Visual foxpro                      D)Visual Foxpro
6、设变量X=12.618,在执行命令 
?ROUND(X,2),ROUND(X,-1),ROUND(X,-2)后显示的结果是(  B      )
A、12.61  12    10                B)12.62    10    0
C、12.60  10    0                D)12.62    12    10
7、如果字符串s1=”人口普查u u u u”,s2=”是科学地制定国民经济政策的基础u u u u”,若想得到字符串”人口普查是科学地制定国民经济政策的基础”,应该执行的命令是(D  )
A、SUBSTR(S1,1,8)+S2    B)TRIM(S1)-S2
C、S1-S2               
D)TRIM(S1-S2)
8、执行如下两条命令
STRING=10
?ABS(6-STRING)
屏幕显示的结果是( A        )
A) 4          B)6          C)-4              D)-6
9、已知X=”research  ”,Y=”sea",LEN(X)的值为10,则LEN(x-Y) 的结果为(  d    )
A) 5          B)7          C)11              D)13
10、在visual FoxPro中,函数MOD(18,4)、MOD(18,-4)、MOD(-18,4)、MOD(-18,-4)的结果分别为(  B    )
A、2  -2    -2  2                B) 2  -2    2  -2
C、2  -2    -2  -2              D)2    2    2    2
11、运算结果是字符串”book”的表达式是( D    )
A)LEFT(“mybook”,4)        B)RIGHT(“bookgood”,4)
C)SUBSTR(“mybookgood”,4,4)           
D) SUBSTR(“mybookgood”,3,4) 
12、表达式STUFF(“GOODBOY”,5,3”GIRL”)的运算结果为【GOODGIRL                】
13、LEFT(“123456789”,LEN(“数据库”))的计算结果是【  123456        】。
14、?LEN(“+”+”a+b=c”)=【6    】
15、?LEN(TRIM(“五一”+”假期”))=【8    】
16、LEN(“计算机”)<LEN(“COMPUTER”)=【 .T.  】
17、AT(“a+b=c”,”+”)=【0    】。
18、AT(“IS”,”THIS IS A BOOK”)的运算结果为【 3  】。
19、常量 .n.表示的是逻辑型的数据。
20、在Visual FoxPro中,可以用命令?<;表达式>来测试数值型内存变量是否能够被3整除.如果使用IN
T函数,表达式应该写成【int(x/3)=x/3                      】;如果使用MOD函数,表达式应该写成【  mod(x,3)=0                    】;如果使用ROUND函数,表达式应该写成【      round(x/3,0)=x/3
】。
3.日期和时间函数
宋体(1)日期和时间函数
1)系统当前日期函数DATE()
格式:DATE()
功能:返回当前系统日期值。返回值为日期型,其格式可由SET DATE、SET CENTURY、SET MARK TO改变。
2)系统当前时间函数TIME()
格式:TIME()
功能:以时、分、秒(HH:MM:SS)的格式显示系统的当前时间,返回值为字符型。
3)系统当前日期时间函数DATETIME ()
格式:DATETIME ()
功能:返回系统当前日期时间值。返回值为日期时间型。
(2)求年份、月份和天数函数
1)年份函数YEAR()
格式:YEAR(<;日期型表达式>/<;日期时间型表达式>)
功能:返回日期型、日期时间型表达式的年份值。函数返回值为数值型。
2)月份函数MONTH()
格式:MONTH(<;日期型表达式>/<;日期时间型表达式>)
功能:返回日期型、日期时间型表达式的月份值。函数返回值为数值型。
3)日函数DAY()
格式:DAY(<;日期型表达式>/<;日期时间型表达式>)
功能:返回日期型、日期时间型表达式的日子的数值。函数返回值为数值型。
(3)时、分和秒函数
1)小时函数HOUR()
格式:HOUR(<;日期时间型表达式>)
功能:返回日期时间型表达式的小时
部分(24小时制)。函数返回值为数值型。
2)分钟函数MINUTE()
格式:MINUTE(<;日期时间型表达式>)
功能:返回日期时间型表达式的分钟部分。函数返回值为数值型。
3)秒数函数SEC()
格式:SEC(<;日期时间型表达式>)
功能:返回日期时间型表达式的秒数部分。函数返回值为数值型。
示例:
x={^2009-10-2 01:30:28 am}
?date(), time(), datetime(), day(datetime())
?year(x), month(x), hour(x), minute(x), sec(x)
答案:
x={^2009-10-2 01:30:28 pm}
?year(x), month(x), hour(x), minute(x), sec(x)
答案:
4.数值类型转换函数
1)数值转换成字符型函数
格式:STR(<;数值表达式>[,<L>[,N]])
功能:将数值表达式转为长度为L,小数位数为N的字符串。
宋体说明:
1)<;长度>给出转换后的字符串长度,该长度包括小数点、负号。如果缺省<;长度>和<;小数位数>,其输出结果将取固定长度为10位,且只取其整数部分;
2)<;小数位数>给出小数位数,决定转换后小数点右面的小数位数,默认位数为0位;
3)如果<;长度>的值大于<;数值表达式1>给出值的数字位数时,在返回的字符串左边添加空格;
4)如果<;长度>的值大于等于整数位数但小于整数和小数位数之和,将优先满足整数部分而自动调整小数位数。
5)如果<;长度>的值小于小数点左边的数字位数,将返回一串星号,表示数值溢出。
4.数值类型转换函数
示例:
x=-1.278
?str(x, 8, 2), str(x, 2),str(x, 1)
答案:
? str(x)
答案:-1
4.数值类型转换函数
2)字符串转为数值函数
格式:VAL(<;字符表达式>)
功能:将字符表达式值转为数值
1)<;字符表达式>的值必须是数字形式的字符串,它只能含有数字、正负号和小数点;
2)转换时,如果遇到非上述字符则停止。如果字符型表达式的第一个字符即非上述字符,则转换停止;
3)转换后的小数位数,隐含为2位,可用SET DECIMAL TO N去改变。
示例:
x=“-12.45”
y=“b2.6”
?val(x), val(y)
3)将字符串转为日期或时间函数
格式:CTOD(<;字符表达式>) 
CTOT(<;字符表达式>)
功能:
CTOD()将字符表达式转为日期型数据
CTOT()将字符表达式转为日期时间型数据
说明:<;字符表达式>必须是一个有效的日期|日期时间格式。
示例:
?ctod(“10/2/2009”), ctot(“10/2/2009 10:30:51 am”)
round函数有几个参数答案:
4)日期时间转为字符型数据
格式:DTOC(<;日期表达式>|<;日期时间表达式>[,1])              TTOC(<;日期时间表达式>[,1])
功能:
DTOC()将日期表达式或日期时间表达式转为字符型数据,若选1则字符格式YYYYMMDD共8个字符。
TTOC()将日期时间表达式转为字符型数据,若选1则字符格式YYYYMMDDHHMMSS共14个字符
示例:
?
dtoc(date()), ttoc(datetime())
?dtoc(date(),1), ttoc(datetime(),

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。