1、SETEXACTON|OFF的进一步说明的进一步说明参数参数ON指定相等的表达式必须是指定相等的表达式必须是每个字符都相匹配每个字符都相匹配。比较时,忽略表达式结尾的空格。比较时,忽略表达式结尾的空格。参数参数OFF(默认值默认值)必须是必须是右端表达式结尾前的每个字符右端表达式结尾前的每个字符都相匹配,都相匹配,才是相等的表达式。才是相等的表达式。备注备注SETEXACT设置值对于相等长度的字符串没有任设置值对于相等长度的字符串没有任何作用。何作用。1例如:例如:(1)setexactoff?abcd=abc?abc=abcd?abc=abc?abcd=abc(2)setexacton?ab
2、cd=abc?abc=abc?abc=abc23.3.2 3.3.2 字符函数字符函数(参数(参数CC,或函数结果或函数结果CC)字符串长度函数字符串长度函数LEN()LEN()N N 【格式格式】LEN(LEN()【功能功能】返回返回c cExpExp串包含的字符串包含的字符个数个数(长度)。(长度)。如:如:?LEN(VisualFoxPro程序设计程序设计)21212 2大小写转换函数大小写转换函数LOWER()LOWER()和和UPPER()UPPER()C C 【格式格式】LOWER(LOWER()UPPER(UPPER()【功能功能】LOWER()LOWER()将将cExpcExp
3、串中字母串中字母全部变成小写字母全部变成小写字母,UPPER()UPPER()将将cExpcExp串中字母串中字母全部变成大写字母全部变成大写字母,其它字符不变。其它字符不变。如:如:?LOWER(VisualFoxPro程序设计程序设计)v visualfoxpro程序设计程序设计33空格函数空格函数 SPACE()C 【格式格式】SPACE()【功能功能】返回一个包含返回一个包含nExp个空格的字符串。个空格的字符串。例如:例如:?“姓名姓名”+SPACE(4)+”性别性别”姓名姓名 性别性别 4删除字符串前后空格函数删除字符串前后空格函数 C 【格式格式】TRIM()LTRIM()ALL
4、TRIM()【功能功能】TRIM()删除删除cExp串的串的尾部的尾部的空格字符。空格字符。LTRIM()删除删除cExp串的串的前导前导空格字符。空格字符。ALLTRIM()删除删除cExp串的串的前导和尾部前导和尾部的空格字符。的空格字符。45 5取子串函数取子串函数LEFT()LEFT()、RIGHT()RIGHT()、SUBSTR()SUBSTR()C C 【格式格式】LEFT(LEFT(,)RIGHT(RIGHT(,)SUBSTR(SUBSTR(,)【功能功能】LEFT()LEFT()返回返回从从CExpCExp串的串的左边左边截取截取NExpNExp个个字符的子串。字符的子串。RI
5、GHT()RIGHT()返回从返回从CExpCExp串的串的右边右边截取截取NExpNExp个个字符的子串。字符的子串。SUBSTR()SUBSTR()返回从串返回从串CExpCExp中第中第N1N1个字符开始,截取个字符开始,截取N2N2个个字符的子串。字符的子串。5例如:例如:?LEFT(123456789,4),LEFT(外贸财会外贸财会,4)1234外贸外贸?RIGHT(123456789,4),RIGHT(青岛大青岛大学学,2)6789学学ss=青岛大学青岛大学?SUBSTR(ss,5),SUBSTR(ss,5,0),SUBSTR(青岛青岛大学大学,9)大学大学 66 6计算子串出现
6、次数函数计算子串出现次数函数OCCURS()OCCURS()N N 【格式格式】OCCURS(OCCURS(Exp1,)Exp2)【功能功能】返回返回串串1 1在串在串2 2中的出现的次数中的出现的次数,函数值为函数值为整数整数。如果串如果串2 2不包含串不包含串1 1,函数返回值为零。,函数返回值为零。说明:说明:若若 串串11是是 串串22的其中一部分,则称的其中一部分,则称 串串11是是 串串22 的一个子串的一个子串 例如:例如:STORE “STORE “abcaregtrafabcaregtraf”TO S”TO S?OCCURS(“a”,S),OCCURS(“r”,S)OCCUR
7、S(“a”,S),OCCURS(“r”,S)3 23 277 7求子串位置函数求子串位置函数 N N 【格式格式】AT(AT(,)ATC(ATC(,)【功能功能】AT()AT()返回串返回串1 1在串在串2 2中的起始位置中的起始位置,函数值为函数值为整数整数。如果串如果串2 2不包含不包含串串1 1,函数返回值为,函数返回值为零零。ATC()ATC()功能与功能与AT()AT()类似,只是类似,只是不区分大小写不区分大小写 例如:例如:?AT(“is”,”this is a book.”AT(“is”,”this is a book.”,2)2)?AT(“Is”,”this is a boo
8、k.”)AT(“Is”,”this is a book.”)?ATC(“Is”,”this is a book.”)ATC(“Is”,”this is a book.”)6 0 36 0 3 88 8子串替换函数子串替换函数STUFF()STUFF()C C 【格式格式】STUFF(STUFF(,)【功能功能】用用C2C2串替换串替换C1C1串中从串中从N1N1指定位置开始的指定位置开始的 N2N2个字符。个字符。即即从从C1的第的第N1个字符开始删去个字符开始删去N2个字符,并将个字符,并将C2插在该位插在该位置上。置上。说明:说明:若若N2=0,则只插入不删除;则只插入不删除;若若C2是空
9、串,则只删除不插入。是空串,则只删除不插入。例如:例如:ss=ABCDEF?STUFF(ss,3,3,123),STUFF(ss,2,0,*)AB123FA*BCDEF?STUFF(ss,2,3,),STUFF(ss,8,3,*)AEFABCDEF*99 9字符串替换函数字符串替换函数 CHRTRAN()CHRTRAN()C C 【格式格式】CHRTRAN(CHRTRAN(,)【功能功能】当当C1C1串中的一个或多个字符与串中的一个或多个字符与C2C2串中的某个字符相串中的某个字符相匹配时,就用匹配时,就用C3C3串中串中对应字符对应字符(相同位置)替换这些字符。(相同位置)替换这些字符。说明
10、:说明:若若C3串包含的字符个数串包含的字符个数少于少于C2串中包含的字符个串中包含的字符个数,则数,则C1串中相匹配的字符被删除串中相匹配的字符被删除。若若C3串串多于多于C2串,串,多余字符被忽略多余字符被忽略。例如:例如:X1=CHRTRAN(ABACAD,ACD,X12)Y1=CHRTRAN(计算机计算机ABC,计算机计算机,电电脑脑)Z1=CHRTRAN(大家好大家好!,大家大家,多数人多数人)?X1,Y1,Z1XBX1X2电脑电脑ABC多数好多数好!101010字符匹配函数字符匹配函数 LIKE()LIKE()L L 【格式格式】LIKE(LIKE(,)【功能功能】比较两个字符串对
11、应位置上的字符,若所有对应比较两个字符串对应位置上的字符,若所有对应 字符都相匹配,则函数返回字符都相匹配,则函数返回.T.,.T.,否则函数返否则函数返 回回 .F.F.。说明:说明:中可包含通配符中可包含通配符?和和*。例如:例如:X=“abc”Y=“abcd”?LIKE(“ab*”,X),LIKE(“ab*”,Y),LIKE(X,Y),LIKE(“Abc”,X).T.T.F.F.111111将字符转换成将字符转换成ASCASC码的码的函数函数 ASC()ASC()-N-N 【格式格式】ASC(ASC()【功能功能】给出指定字符串最左边的一个字符的给出指定字符串最左边的一个字符的ASCAS
12、C码值。码值。1212将将ASCASC码值码值转换成相应字符函数转换成相应字符函数 CHR()CHR()-C-C 【格式格式】CHR(CHR()【功能功能】将数值表达式的值作为将数值表达式的值作为ASCASC码,给出所码,给出所对应的字符对应的字符12课堂练习课堂练习一、填空:一、填空:1、LEN(“北京北京-NBCH”)=_2、AT(abc,DFABCLN)=_3、SUBSTR(“Itsabook”,8)=_4、A=GoodByeB=“LIMING”STUFF(A,6,3,B)=_5、m=“XYZ12”LIKE(“?12”,m)=_LIKE(“*12”,m)=_6、LEFT(“北京北京-NB
13、CH”,4)=_13假设假设S1=重庆计算机基础学会重庆计算机基础学会(1)从字符串)从字符串S1中分别取出字符串中分别取出字符串“重庆重庆”、“计算机计算机”、“学会学会”;?left(s1,4),substr(s1,5,6),right(s1,4)(2)分别测试字符串)分别测试字符串“计算机计算机”、“计算机学会计算机学会”在字符串在字符串S1中的起始位置。中的起始位置。?at(计算计算,s1),at(计算机学会计算机学会,s1)(3)测试字符串)测试字符串“学会学会”在字符串在字符串“重庆计算机基础学会是重庆计算机基础学会是西南地区计算机基础研究学会西南地区计算机基础研究学会”第二次出现
14、的位置;第二次出现的位置;?at(学会学会,重庆计算机基础学会是西南地区计算机基础研究学会重庆计算机基础学会是西南地区计算机基础研究学会,2)(4)将字符串)将字符串S1中的中的“重庆重庆”改成改成“西部地区西部地区”;?stuff(s1,1,4,西部地区西部地区)(5)将字符串)将字符串S1中的中的“基础基础”去掉;去掉;?stuff(s1,11,4,)(6)在字符串)在字符串S1的前后各加的前后各加5个星号;个星号;?*+s114假设假设S2=abCD34fgS(其中(其中“”表表示空格)示空格)(1)分别删除字符串)分别删除字符串S2的首部空格、尾部空格、的首部空格、尾部空格、首尾的所有
15、空格;首尾的所有空格;(2)将字符串)将字符串S2中所有字母分别转换为大写字母、中所有字母分别转换为大写字母、小写字母;小写字母;?ltrim(s2);?trim(s2);?alltrim(s2)?lower(s2);?upper(s2)(3)分别测试字符串)分别测试字符串A,ABC的的ASC码。码。(4)输出比)输出比“Z”的的ASCII小小20的字符的字符。?asc(A);?asc(ABC)?chr(asc(Z)-20)153.3.3 3.3.3 日期和时间函数日期和时间函数(参数(参数DD,或结果或结果DD)日期时间函数是处理日期型或日期时间型数据的函日期时间函数是处理日期型或日期时间型
16、数据的函数。其自变量为日期型表达式数。其自变量为日期型表达式dExpdExp或日期时间型表达式或日期时间型表达式tExptExp。1 1系统日期和时间函数系统日期和时间函数 【格式格式】DATE()DATE()返回当前系统日期返回当前系统日期 D D TIME()TIME()返回当前系统时间,格式为返回当前系统时间,格式为hh:mm:sshh:mm:ss。C C DATETIME()DATETIME()返回当前系统日期时间返回当前系统日期时间 T T 162求年份、月份和天数函数求年份、月份和天数函数 N 【格式格式】YEAR()MONTH()DAY()【功能功能】YEAR()返回返回 D|T
17、中的中的年份值年份值。(如:如:2004)MONTH()返回返回 D|T中的中的月份数月份数。DAY()返回返回 D|T中的中的天数天数。例:例:?YEAR(DATE(),YEAR(1999/12/23+20)2010 2000?DATE(),MONTH(DATE(),DAY(2010/05/08+20)173 3时、分和秒函数时、分和秒函数 N N 【格式格式】HOUR(HOUR()MINUTE(MINUTE()SEC(SEC()【功能功能】HOUR()HOUR()返回返回 T T中的小时部分。中的小时部分。MINUTEMINUTE()()返回返回T T中的分钟部分。中的分钟部分。SEC()
18、SEC()返回返回T T中的秒数部分。中的秒数部分。例:例:T=2004-12-3110:15:36p?HOUR(T),MINUTE(T),SEC(T)221536183.3.4 数据类型转换函数数据类型转换函数 7 在数据库应用的过程中,经常要将不同数据类型的数据在数据库应用的过程中,经常要将不同数据类型的数据进行相应转换,满足实际应用的需要。进行相应转换,满足实际应用的需要。数值转换成字符串的函数数值转换成字符串的函数STR()C 【格式格式】STR(,)【功能功能】将将N1的数值转换成长度为的数值转换成长度为N2,小数位数为小数位数为N3 的字符串形式。的字符串形式。N型型C型型 说明:
19、说明:转换以后的长度,默认值为转换以后的长度,默认值为10。要保留的小数位数,默认值为要保留的小数位数,默认值为0。例如:例如:?“计算结果为:计算结果为:”+STR(1234.567,7,2)计算结果为:计算结果为:1234.57 192 2字符型转换成数值型函数字符型转换成数值型函数VAL()VAL()N N 【格式格式】VAL()VAL()【功能功能】将将C C串串中数字转换成对应数值中数字转换成对应数值C型型N型型 说明:说明:转换结果取两位小数。转换结果取两位小数。遇到非数字字符即停止转换。遇到非数字字符即停止转换。例如:例如:?VAL(2360),VAL(12*4),VAL(56.
20、345.8)2360.0012.0056.35?VAL(WIN95),0.00203字符型转换成日期货日期时间型函数字符型转换成日期货日期时间型函数 D【格式格式】CTOD()D CTOT()T【功能功能】CTOD()把把C串串转换成对应日期型数据。转换成对应日期型数据。C型型D型型 CTOT()把把C串转换成对应日期时间型数据。串转换成对应日期时间型数据。C型型T型型 例如:例如:?CTOT(“09/10/2003 20:09:52)09/20/03 20:09:52 注意:注意:字符表达式应与字符表达式应与所设置的日期格式所设置的日期格式相同,否则出错。相同,否则出错。214 4日期或日期
21、时间型转换成字符型函数日期或日期时间型转换成字符型函数 【格式格式】DTOC(DTOC(,1,1)C C TTOC(TTOC(,1,1)C C 【功能功能】把日期把日期D D或日期时间或日期时间T T转换成相应的字符串。转换成相应的字符串。D/TD/T型型C C型型说明:说明:选选1时时,nDTOC()DTOC()函数的输出格式是函数的输出格式是YYYYMMDD,共共8个字符;个字符;nTTOC()TTOC()函数的输出格式是函数的输出格式是YYYYMMDDHHMMSS,共共14个个字符字符.22例如:例如:C1=DTOC(DATE()&将系统日期转换成字符串将系统日期转换成字符串,并放入内存
22、变量并放入内存变量C1C2=DTOC(DATE(),1)&指定转换成的字符串格式为指定转换成的字符串格式为YYYYMMDD?C1,C203/22/1020100322?TTOC(DATETIME()?TTOC(DATETIME(),1)23(1)输出当前的系统日期、系统时间;)输出当前的系统日期、系统时间;?date();?time()(2)取出系统日期时间中的年、月、日、时、分、)取出系统日期时间中的年、月、日、时、分、秒;秒;?year(date(),month(date(),day(date()?hour(datetime(),minute(datetime(),sec(datetime
23、()(3)假设)假设C=“07/21/2005“,将字符串将字符串C转换为日期转换为日期型并求出它型并求出它15天后的日期;天后的日期;c=07/21/2005?ctod(c)+15(4)分别将字符串)分别将字符串“123.456”、“34abc56”、“ab123”转换成数值型,并观察它们的不同;转换成数值型,并观察它们的不同;?val(123.456),val(34abc56),val(ab123)123.4634.000.00245 5宏替换函数宏替换函数 【格式格式】&.【功能功能】替换出替换出字符型内存变量字符型内存变量的内容。的内容。说明:说明:1)圆点)圆点.作为函数结束的标记。
24、作为函数结束的标记。圆点后为圆点后为回车回车或或空格空格时时,圆点可省圆点可省2)它是惟一不带圆括号的函数。)它是惟一不带圆括号的函数。例例1:X=CHINA Y=“X”?Y,&Y,XCHINA例例3:A=“&B”B=“C”C=“D”?A,&A,&B&B D D例例2:A=20 B=35+?&B.A 55253.3.5 3.3.5 测试函数测试函数1 1值域测试函数值域测试函数 BETWEEN()BETWEEN()L L【格式格式】BETWEEN(BETWEEN(,)【功能功能】判断一个表达式的值是否介于另外两个表达式之间。判断一个表达式的值是否介于另外两个表达式之间。说明说明:(1)(1)若
25、若介于介于和和之间,之间,则函数值为真(则函数值为真(.T.),),否则为假(否则为假(.F.)。)。(2)如果如果和和有一个为有一个为NULLNULL值,值,那么函数值也是那么函数值也是NULLNULL值。值。(3)自变量的类型可以是:自变量的类型可以是:N,C,D,T,F,B,Y,但三个但三个自变量的类型必须一致。自变量的类型必须一致。26例如:例如:STORE.NULL.TOXY=100?BETWEEN(150,Y,Y+100),BETWEEN(90,X,Y).T.NULL.272 2空值(空值(NULLNULL值)测试函数值)测试函数ISNULL()ISNULL()L L【格式格式】I
26、SNULL(ISNULL()【功能功能】判断一个表达式的运算结果是否为空值判断一个表达式的运算结果是否为空值NULLNULL。说明:说明:若是若是NULL值,则函数值为真(值,则函数值为真(.T.),),否否则为假则为假(.F.)。)。例如例如:STORE.NULL.TOX?X,ISNULL(X).NULL.T.283 3 “空空”值测试函数值测试函数EMPTY()EMPTY()L L【格式格式】EMPTY(EMPTY()【功能功能】测试表达式的运算结果是否为测试表达式的运算结果是否为“空空”值。值。返回逻辑返回逻辑真(真(.T.)或假(或假(.F.)。)。说明:说明:自变量的类型可以是:自变
27、量的类型可以是:N,C,D,T。不同类型数据的不同类型数据的“空空”值,有不同的规定。值,有不同的规定。数据类型数据类型“空空”值值数据类型数据类型“空空”值值数值型0双精度型0字符型空串、空格、制表符、空串、空格、制表符、回车、换行回车、换行日期型空(如CTOD()货币型0日期时间型空(如CTOT()浮点型0逻辑型.F.整型0备注字段空(无内容)294数据类型测试函数数据类型测试函数 C 【格式格式】VARTYPE(,)TYPE(“”)【功能功能】测试表达式的数据类型,测试表达式的数据类型,返回值是一个表示数据类型的大写字母返回值是一个表示数据类型的大写字母 (C,N,Y,D,L,)。注意注
28、意(vartype)若若 的运算结果是的运算结果是NULL,则根据则根据的值决定是否返回的值决定是否返回的类的类型型:.T.返回返回的类型的类型;.F.或省略则返回或省略则返回X。30例如:例如:A=“10/20/04”B=.NULL.Z=$102.45?VARTYPE(A),VARTYPE(Z),VARTYPE(DATE()CYC?TYPE(“B”),VARTYPE(B),VARTYPE(B,.T.)LXL319 9条件测试函数条件测试函数IIF()IIF()【格式格式】IIF(IIF(,1,)2)【功能功能】逻辑表达式逻辑表达式L L值值为真为真(.T.)(.T.),返回表达式返回表达式1
29、 1的的值,否则返回表达式值,否则返回表达式2 2的值。的值。例如:例如:x=5 y=3?IIF(xy,“Yes”,“No”)32第第3节节重点重点:INT、CEILING、FLOOR、ROUND、MOD、MAX、MIN、SQRT、SIGN2、字符串处理函数:字符串处理函数:AT、SUBSTR、LEFT、RIGHT、TRIM、LTRIM、STUFF、LEN、&DATE、TIME、YEAR、MONTH、CMONTH、DOW、CDOW、DAYSTR、VAL、CTOD、CTOT、DTOC、TTOC5、测试函数测试函数TYPE、IIF、ISNULL、EMPTY、BETWEEN33课堂练习课堂练习一、写
30、出下列命令的执行结果:一、写出下列命令的执行结果:D=CTOD(“10/01/04”)D1=D+35?D1,D1-4?YEAR(D1)?VARTYPE(D1)?LEN(“&D1”)D2=DTOC(D1)?VARTYPE(D2)?LEN(“&D2”)34二、填空二、填空 1、STR(2.357)=2、VAL(2.357)=3、VAL(SUBS(“奔腾奔腾586”,5,1)+LEN(“VisualFoxPro”)=4、X=“女女”IIF(x=“男男”,1,iif(xb=女女,2,3)=5、CTOD(“10/20/04”)=6、D=DATE()VARTYPE(D)=10/20/04182D2.362
31、35第三章第三章小结小结一、常量:一、常量:N,Y,C,D,T,L变量:变量:字段变量字段变量:N,F,B,I,C,L,D,T,Y,M,G内存变量:内存变量:N,Y,C,L,D,T数组内存变量数组内存变量简单内存变量简单内存变量注意:注意:变量名的规定;内存变量的操作。变量名的规定;内存变量的操作。二、运算符、表达式:二、运算符、表达式:数值运算符数值运算符(NN)字符运算符字符运算符(CC)日期运算符日期运算符(D,ND,N)关系运算符关系运算符(N,C,DL)逻辑运算符逻辑运算符(LL)注意:注意:各种运算符的运算规则、优先级顺序。各种运算符的运算规则、优先级顺序。36三、三、函数:函数:1、数值函数:、数值函数:INT、CEILING、FLOOR、ROUND、MOD、MAX、MIN、SQRT、SIGN2、字符函数:字符函数:LEN、AT、ATC、SUBSTR、LEFT、RIGHT、TRIM、LTRIM、STUFF、CHRTRAN、LIKE3、日期时间函数:日期时间函数:DATE、TIME、DATETIME、DAY、MONTH、YEAR、HOUR、MINUTE、SEC4、数据类型转换函数数据类型转换函数STR、VAL、CTOD、CTOT、DTOC、TTOC5、测试函数测试函数:BETWEEN、ISNULL、EMPTY、VARTYPE、IIF37