Download presentation
Presentation is loading. Please wait.
1
徐春 南京金启航教育培训中心 E_mail:xuchun2006@126.com TEL:13605146298 QQ:503682783
第三章 数据与数据运算 徐春 南京金启航教育培训中心 TEL: QQ:
2
考纲分析 2011年9月:选择2分(left、right及substr函数);填空6分(SET CENTURY ON、数组及表达式)
2011年3月:选择2分(%求余);填空4分(EMPTY()函数、”-“ 2010年9月:选择4分(SET CENTURY ON、定界符);填空4分(.AND.、IIF函数)
3
3.1 VFP数据类型 1.字符型:字母、数字、空格、符号等构成,其长度范围:0~254。C表示
2.数值型:数值型、浮点型、双精度型、整型。 3.货币型:Y表示 4.日期型:D表示。格式:mm/dd/yyyy 5.日期时间型:T表示 6.逻辑型:.T.和.F. 7.备注型 8.通用型
4
? “abc”,‘abc’,[abc] &&结果为abc abc abc
3.2 常量与变量 3.2.1常量 1.数值常量:科学计数法(4.5E-12的值为4.5*10-12) 2.货币常量 3.字符常量:三个定界符(’’,””,[])(常考) 4.日期型常量:用{^}来表示 5.日期时间型常量 6.逻辑型常量:.T.或.F. 占1个字节 ? “abc”,‘abc’,[abc] &&结果为abc abc abc set century on ? date() &&结果为12/10/2011 SET CENTURY ON 设置4位数据年份(常考) SET MARK TO 恢复系统默认的斜杠日期分隔符年份 SET DATE TO YMD 设置年月日格式
5
● <内存变量>=<表达式> ●STORE <表达式> TO <内存变量> 3.数组(考过)
a=10 ? a &&结果为10 STORE 10+1 TO b ? b &&结果为11 3.2.2变量 1.字段变量 指数据库表中定义的所有字段。 2.内存变量 变量赋值: ● <内存变量>=<表达式> ●STORE <表达式> TO <内存变量> 3.数组(考过) 数组声明: DIMENSION <数组名>(<下标上限1>[,<小标上限2>])[…] DECLARE <数组名>(<下标上限1>[,<小标上限2>])[…] 注意:数组声明后,系统自动给每个数组元素赋以逻辑值.F. DIMENSION A(4) ? A(1) &&结果为.F.
6
格式1:STORE <表达式> TO <变量名表> 格式2:<内存变量名>=<表达式>
3.2.3内存变量常用命令 1.内存变量的赋值 格式1:STORE <表达式> TO <变量名表> 格式2:<内存变量名>=<表达式> 功能说明:计算表达式并将表达式值赋予一个或多个内存变量,其中格式2只能给一个变量赋值。 2.表达式值的显示 格式1:?[<表达式>] 格式2:??[<表达式>] 功能说明:计算表达式并输出各表达式值。?<表达式>值在下一行输出;??<表达式>值在本行输出。 ? "a" ?? “b“ 显示结果ab ? “a” ? “b”显示结果为 a b
7
●LIST MEMORY [LIKE<通配符>][TO PRINTER|TO FILE <文件名>]
store "H" TO x1 store "i" to x2 display memory like x* &&结果为 3.显示内存变量 ●LIST MEMORY [LIKE<通配符>][TO PRINTER|TO FILE <文件名>] ●DISPLAY MEMORY [LIKE<通配符>][TO PRINTER|TO FILE <文件名>] 功能:显示内存变量的当前信息,包括变量名、作用域、类型和取值。 4.清除内存变量(考过) ●CLEAR MEMORY ● RELEASE <内存变量名> ● RELEASE ALL [EXTENDED] ● RELEASE ALL [LIKE<通配符>[EXCEPT<通配符>] RELEASE X1,X2 RELEASE ALL LIKE A*
8
5.表中数据域数组数据之间的交换 1)将表的当前记录复制到数组 ●SCATTER [FIELDS <字段名表>][MEMO] TO <数组名>|BLANK] ●SCATTER [FIELDS LIKE <通配符>|FIELDS EXCEPT <通配符>][MEMO] 2)将数组数据复制到表的当前记录 ●GATHER FROM <数组名>[FIELDS <字段名表>][MEMO] ●GATHER FROM <数组名>[FIELDS LIKE<通配符>|FIELDS EXCEPT <通配符>][MEMO]
9
3.3 表达式 3.3.1数值、字符与日期时间表达式 1.数值表达式 1)算术运算符优先级 优先级 运算符 说明 1 ()
形成表达式内的子表达式 2 **或^ 乘方运算 3 *、/、% 乘、除、求余运算 4 +、- 加、减运算
10
2)求余运算 求余运算、取余函数MOD()的作用。余数的正负号与除数一致。如果被除数与除数同号,那么函数即为两数相除的余数;如果被除数与除数异号,则余数为两数相除的余数加上除数的值。 举例: ? 10%3 &&结果为1 ? 10%-3 &&结果为-2 ? -10%3 &&结果为2 ? -10%-3 &&结果为-1
11
+:前后两个字符串首尾连接形成一个新的字符串。 -:连接前后两个字符串,并将前字符串的尾部空格移到黑合并后的新字符串尾部。
?“计算机 ”+“等级考试“ &&结果为”计算机 等级考试“ ?“计算机 ”-“等级考试“ &&结果为”计算机等级考试 “ 2.字符型表达式 字符运算符: +:前后两个字符串首尾连接形成一个新的字符串。 -:连接前后两个字符串,并将前字符串的尾部空格移到黑合并后的新字符串尾部。 3.日期时间表达式 日期+天数、日期-日期、日期-天数 举例: ?{^ }-8 &&结果为:12/02/2011 ?{^ }+8 &&结果为:12/18/2011 ?{^ }- {^ }- &&结果为:6
12
3.3.2关系表达式 1.关系表达式 运算符 说明 < 小于 <= 小于或等于 > 大于 >= 大于或等于 = 等于 == 字符串精确比较 <>、#、!= 不等于 $ 子串包含测试
13
2.设置字符的排序次序 3.字符串精确比较与EXACT设置 ==:比较两个字符串时,只有当两个字符串完全相同时,运算结果才会是逻辑真.T.,否则为逻辑假.F.。 =:比较字符串时,运算结果与SET EXACT ON/OFF设置有关,该命令是设置精确匹配与否的开关。OFF:字符串比较以右边的字符串为目标,右字符串结束即终止比较。ON:字符串的比较运算将进行到两个字符串全部结束为止,先在较短字符串的尾部加上若干个空格,使两个字符串的长度相等,然后再进行比较。 注意:在SET EXACT ON状态下,“=”与“==”等价。 SET EXACT OFF状态下,右边是左边子串即为.T.。
14
3.3.3 逻辑表达式 1..NOT. 逻辑非 .AND. 逻辑与 .OR. 逻辑或 ? .T..AND. .T. &&显示结果.T. ? .T. .OR. .F. &&显示结果.T. 2.运算符优先级 算术>关系>逻辑 ? 8>3 .AND. 9<4 &&显示结果.F.
15
3.4 常用函数 3.4.1数值函数 1.ABS()函数 格式:ABS(<数值表达式>)
STORE 100 TO X ? ABS(20-X),ABS(X-20) &&结果为5 5 ? ABS(7-2*4) &&结果为1 ? ABS(-50) &&结果为50 3.4.1数值函数 1.ABS()函数 格式:ABS(<数值表达式>) 功能:ABS()函数返回指定的表达式的绝对值。 2.SIGN()函数 格式:SIGN(<数值表达式>) 功能:SIGN()函数返回指定数值表达式的符号。当表达式的运算结果为正、负和0时,函数值分别胃1,-1,0。 ?SIGN(12),SIGN(-34),SIGN(0) &&结果为:1,-1,0
16
格式:SQRT(<数值表达式>) 功能:SQRT()函数返回数值表达式的平方根。 4.PI()函数 格式:PI()
STORE 2.30 TO A STORE PI()*A^2 TO B ? B &&结果为
17
格式:INT(<数值表达式>) 功能:INT()函数返回数值表达式的整数部分。 6.CELING()函数
STORE 5.7 TO X ? INT(X),INT(-X) &结果为 5 5 5.INT()函数 格式:INT(<数值表达式>) 功能:INT()函数返回数值表达式的整数部分。 6.CELING()函数 格式:CELING(<数值表达式>) 功能:CELING()函数返回大于或等于数值表达式的最小整数。 STORE 5.7 TO X ? CEILING(X),CEILING(-X) &&结果为6 -5
18
格式:FLOOR(<数值表达式>) 功能:FLOOR()函数返回小于或等于数值表达式的最大整数。 8.ROUND()函数
STORT 5.7 TO X ?FLOOR(X),FLOOR(-X) &&结果为 5 -6 7.FLOOR()函数 格式:FLOOR(<数值表达式>) 功能:FLOOR()函数返回小于或等于数值表达式的最大整数。 8.ROUND()函数 格式:ROUND(<数值表达式1>,<数值表达式2>) 功能:ROUND()函数返回数据表达式在指定位置四舍五入后的结果。<数值表达式2>表示四舍五入的位置。如果<数值表达式2>大于或等于0,那么它表示的是要保留的小数位数;如果<数值表达式2>小于0,那么它表示的是整数部分的舍入位数。 X= ? ROUNT(X,2),ROUND(X,1),ROUND(X,0)ROUND(X,-1) &&结果为
19
格式:MOD(<数值表达式1>,<数值表达式2>)
10.MAX()函数 格式:MAX(<数值表达式1>,<数值表达式2>…) 功能:MAX()函数返回数值表达式中的最大表达式。 ? MAX(“2”,”37”,”7”) && 结果为37
20
11.MIN()函数 格式:MIN(<数值表达式1>[,<数值表达式2>]…) 功能:MIN()函数返回表达式中的最小表达式。 举例: ? MIN(“2”,”34”,”7”) &&结果为34 ? MIN(3.72,INT(2.72)) &&结果为2
21
? LOWER(“ABC”) &&结果为 “abc”
? LEN(“计算机等级考试”) &&结果为14 3.4.2字符函数 1.LEN()函数 格式:LEN(<字符表达式>) 功能:LEN()函数返回字符表达式值的长度,函数值为数值型。 2.LOWER()函数 格式:LOWER(<字符表达式>) 功能:LOWER()函数将表达式中的大写字母转换成小写字母,其他字符不变。 ? LOWER(“ABC”) &&结果为 “abc”
22
? UPPER(“abc”) &&结果为“ABC”
4.SPACE()函数 格式:SPACE(<数值表达式>) 功能:SPACE()函数生成指定空格数的空字符。 ? “计算机”+SPACE(3)+”等级考试” &&结果为 “计算机 等级考试“
23
? TRIM(“计算机 ”)+“等级考试“ &&结果为”计算机等级考试“
6.LTRIM()函数 格式:LTRIM(<字符表达式>) 功能:LTRIM()函数删除<字符表达式>串前空格字符。 ? “计算机”+LTRIM(“ 等级考试”) &&结果为”计算机等级考试“
24
? ALLTRIM(“ 计算机 ”)+“等级考试“ &&结果为”计算机等级考试“
8.LEFT()函数(常考) 格式:LEFT(<字符表达式>,<长度>) 功能:LEFT()函数从字符表达式值的左端取一个指定长度的字串作为函数值。 ? LEFT(“abcde”,3) &&结果为”abc“
25
格式:RIGHT(<字符表达式>,<长度>)
? RIGHT(“abcde”,3) &&结果为”cde“ 9.RIGHT()函数(常考) 格式:RIGHT(<字符表达式>,<长度>) 功能:RIGHT()函数从字符表达式值的右端取一个指定长度的字串作为函数值。 10.SUBSTR()函数(常考) 格式:SUBSTR(<字符表达式>,<长度>) 功能:SUBSTR()函数从表达式值的起始位置取一个指定长度的字串作为函数值。 ? SUBSTR(“abcde”,2,3) &&结果为”bcd“
26
格式:OCCURS(<字符串表达式1>,<字符串表达式2>)
? OCCURS(“O”,“STOP DOG”) &&结果为2 ? OCCURS(“A”,“STOP DOG”) &&结果为0 11.OCCURS()函数(区分大小写) 格式:OCCURS(<字符串表达式1>,<字符串表达式2>) 功能:OCCURS()函数返回第一个字符在第二个字符串中出现的次数,如果第一个字符串不是第一个字符串的字串,则函数数值为0。 12.AT()函数 格式:AT(<字符串表达式1>,<字符串表达式2>[,<数值表达式>]) 功能:AT()函数返回<字符串表达式1 >值的首字符在<字符串表达式2>值中的值;若不是字串则返回0。ATC()不区分大小写。 ? AT(“fox”,“Visual FoxPro”) &&结果为0 ? ATC(“fox”,“Visual FoxPro”) &&结果为8
27
格式:STUFF(<字符表达式1>,<起始位置>,<长度>,<字符表达式2>)
? STUFF(“network”,3,1,“abc”) &&结果为”neabcwork“ 13.STUFF()函数 格式:STUFF(<字符表达式1>,<起始位置>,<长度>,<字符表达式2>) 功能:STUFF()函数用<字符表达式2>串替换<字符表达式1>串中由<起始位置>和<长度>指明的一个字串。 14.CHRTRAN()函数 格式:CHRTRN(<字符表达式1>,<字符表达式2>,<字符表达式3>) 功能:CHRTRAN()函数将ASCII转化为相应的字符,函数返回值为字符型。 ? CHRTRAN(“大家好”,“大家”,“您”) &&结果为”您好“
28
15.LIKE()函数 格式:LIKE(<字符表达式1>,<字符表达式2>) 功能:LIKE()函数比较两个字符串对应位置上的字符,如果所有对应字符都相匹配,函数返回逻辑值真(.T.),否则返回逻辑值假(.F.)。 举例: ? LIKE(“AB*”,”abcd”) &&结果为.T. ? LIKE("ab?","abcd") &&结果为.F. 注意:<字符表达式1>中可以包含通配符”*“和”与“?“,”*”可与任何数目的字符相匹配,“?”可以与任何单个字体相匹配。
29
功能:DATE()函数返回当前系统日期,函数值为日期型。 2.TIME()函数 格式:TIME()
3.4.3日期时间函数 1.DATE()函数 格式:DATE() 功能:DATE()函数返回当前系统日期,函数值为日期型。 2.TIME()函数 格式:TIME() 功能:TIME()函数以24小时制,hh:mm:ss格式返回当前系统时间,函数值为字符型。 ? TIME() &&结果为 23:34:00
30
? DATETIME() &&结果为12/09/11 23:36:00 PM
4.DOW()函数 格式:DOW(<dExp>)|CDOW (<dExp>) 功能:DOW()函数返回日期表达式或日期时间表达式返回的该日期是一周的第几天,用1~7表示星期日~星期六。函数值为数值型,CDOW()函数返回日期表达式或日期时间表达式中星期的应为名称,函数型为字符型。 ? DOW(date()) &&结果为6 ? CDOW(date()) &&结果为Friday
31
格式:YEAR(<日期表达式>|<日期时间表达式>)
?YEAR(date()) &&结果为2011 5.YEAR()函数 格式:YEAR(<日期表达式>|<日期时间表达式>) 功能:YEAR()函数从指定的日期表达式或日期时间表达式中返回年份。 6.MONTH()函数 格式:MONTH(<日期表达式>|<日期时间表达式>) 功能:MONTH()从指定的日期表达式或日期时间表达式中返回月份。 ? MONTH(date()) &&结果为12
32
? HOUR(datetime()) &&结果为23
? DAY(date()) &&结果为9 7.DAY()函数 格式:DAY(<日期表达式>|<日期表达式>) 功能:DAY()从指定的日期或日期时间表达式中返回月份中的天数。 8.HOUR()函数 格式:HOUR(<日期时间表达式>) 功能:HOUR()从日期函数表达式中返回小时部分(24小时制)。 ? HOUR(datetime()) &&结果为23
33
格式:MINUTE(<日期时间表达式>) 功能:MINUTE()从日期时间表达式中返回分钟部分。 10.SEC()函数
? MINUTE(datetime()) &&结果为 43 9.MINUTE()函数 格式:MINUTE(<日期时间表达式>) 功能:MINUTE()从日期时间表达式中返回分钟部分。 10.SEC()函数 格式:SEC(<日期时间表达式>) 功能:SEC()从日期时间表达式中返回秒数部分。 ? SEC(datetime()) &&结果为37
34
格式:STR(<数值表达式>[,<长度>[,<小数位数>]])
3.4.4 数据类型转换函数 1.STR()函数 格式:STR(<数值表达式>[,<长度>[,<小数位数>]]) 功能:STR()将<数值表达式>按设定的<长度>和<小数位数>转换成字符型数据,函数返回值为字符型。 注意:如果<长度>值大于L,则字符串加前导空格以满足规定的<长度>要求;如果<长度>值大于或等于数值表达式值的整数部分(包括负号)但又小于L,则优先满足整数部分而自动调整小数位数;如果<长度>值小于<数值表达式>值的整数部分位数,则返回一串星号(*)。<小数位数>的默认值为0,<长度>的默认值为10. 2.VAL()函数 格式:VAL (<字符表达式>) 功能:VAL ()函数将数值字符串转换为数值。 注意:如果字符串内出现非数字字符,那么只转换前面部分;如果字符串的首字符不是数字符号,则返回数值0,但忽略前导空格。 ? VAL(“123”) &&结果为123.00 ? VAL("1A3") &&结果为1.00 ? VAL(“A3”) &&结果为0.00
35
格式: CTOD(<字符表达式>) 功能: CTOD()函数将“mm/dd/yy”格式的<字符表达式>
4.DTOC()函数 格式:DTOC(<日期表达式>|<日期时间表达式>[,1]) 功能:DTOC()将<日期表达式>转换成相应的字符串,函数返回值类型为字符型。TTOC()函数将日期时间数据转换成字符串。 ? DTOC({^2011/12/09}) &&结果为12/09/11
36
替换的作用相当于去除了字符串的定界符;如果宏替换后面还有非空格字符串,则以“.”表示变量结束,并将宏替换结果的值与字符串的值连接起来。
5.宏替换函数 格式:&<字符型变量>[,] 功能:替换出字符型变量的内容,即&的值是变量中的字符串。如果该函数与后面的字符无明确分界,则要用“.”作为函数结束标识,宏替换可以嵌套使用。 举例: STORE “职工” TO DB USE &DB XM=“姓名” ? &XM-”你好!” SKIP ? XM,&XM 替换的作用相当于去除了字符串的定界符;如果宏替换后面还有非空格字符串,则以“.”表示变量结束,并将宏替换结果的值与字符串的值连接起来。
37
格式:BETWEEN(<表达式T>,<表达式L>,<表达式H>)
3.4.5 测试函数 1.BETWEEN()函数 格式:BETWEEN(<表达式T>,<表达式L>,<表达式H>) 功能:BETWEEN()判断一个表达式的值是否在另外两个表达式的值之间。当<表达式T>值大于或等于<表达式L>值且小于或等于 <表达式H>值时,函数值为逻辑真(.T.),否则函数值为逻辑假(.F.)。如果<表达式L>或<表达式H>有一个是NULL值,则函数值也是NULL值。 2.ISNULL()函数 格式:ISNULL(<表达式>) 功能: ISNULL()判断一个表达式的运算结果是否为.NULL.值,如果是.NULL.值,则返回逻辑真(.T.),否则返回逻辑值假(.F.)。 STORE .NULL. TO X ?X,ISNULL(X) &&结果为.NULL. .T.
38
格式:EMPTY(<表达式>)
? EMPTY(NULL) &&结果为.F. 3.EMPTY()函数 格式:EMPTY(<表达式>) 功能:EMPTY()函数根据表达式的运算结果是否为“空”值返回逻辑真(.T.)或逻辑假(.F.)。 注意:“空”值与NULL值是两个不同的概念。函数EMPTY(.NULL.)返回值为逻辑假(.F.)。 4.VARTYPE()函数 格式:VARTYPE(<表达式>,<逻辑表达式>) 功能:VARTYPE()测试<表达式>的数据类型,返回一个大写字母,函数值为字符型。 如果<表达式>是一个数组,则根据第一个数组元素的类型返回字符串;如果<表达式>的运算结果是NULL值,则根据<逻辑表达式>值决定是否返回<表达式>的类型;如果<逻辑表达式>值为.T.,就返回<表达式>的原数据类型;如果<逻辑表达式>值为.F.或省略,则返回X以表明<表达式>的运算结果是NULL的值。 ? VARTYPE(10) &&结果为N
39
5.EOF()函数 格式:EOF([<工作区>|<表别名>]) 功能:测试记录指针是否指向文件尾,如果是则返回逻辑真(.T.),否则返回逻辑假(.F.)。表文件尾是指最后一条记录的后面位置。如果省略自变量,则测试当前的表文件。 注意:如果在指定工作区上没有打开表文件,EOF函数逻辑假,如果表文件刚打开时,记录指针总是指向首记录。 6.BOF()函数 格式:BOF([<工作区>|<表别名>]) 功能:测试当前表文件中的记录指针是否指向文件首,如果是则返回逻辑真(.T.),否则返回逻辑假(.F.),表文件首是指第一条记录的前面位置。 注意:如果指定工作区上没有打开表文件,BOF函数返回逻辑假;如果表文件中不包含任何记录,BOF函数返回逻辑真。
40
7.RECNO()函数 格式:RECNO([<工作区>|<表别名>]) 功能:RECNO()返回当前表文件中当前记录的记录号。如果指定工作区上没有打开表文件,则函数值为0;如果记录指针指向文件尾,函数值为表文件中的记录数加1;如果记录指针指向文件首,函数值为表文件中的第一条记录的记录号。 8.RECCOUNT()函数 格式:RECCOUNT ([<工作区>|<表别名>]) 功能:返回当前表文件中的记录个数,如果指定工作区上没有打开表文件,则函数值为0。 注意:RECCOUNT()函数返回的是表文件中物理上存在的记录个数。不管记录是否逻辑删除及SET DELETED的状态如何,也不管记录是否过滤(SET FILTER),该函数都会把他们考虑在内。
41
格式:IIF(<逻辑表达式>,<表达式1>,<表达式2>)
x=100 y=300 ? IIF(X>Y,X-50,X+50) &&结果为150 9.IIF()函数(该函数常考) 格式:IIF(<逻辑表达式>,<表达式1>,<表达式2>) 功能:IIF()函数测试<逻辑表达式>的值,如果为逻辑真(.T.),则函数返回<表达式1>的值;如果为逻辑假(.F.),则函数返回<表达式2>的值 10.DELETED()函数 格式:DELETED([<工作区>|<表别名>]) 功能:DELETED()函数测试工作区中打开的表,记录指针锁指的当前记录是否有删除标识“*”,如果有则为真,否则为假。如果省略自变量,则测试当前工作区中所打开的表。
42
3.4.6 其他常用函数 1.TYPE()函数 TYPE()返回表达式中的值的类型。 2.INKEY()函数 INKEY()返回一个键码值,该值对应于键盘的缓冲区中第一个键的操作。如果没有按键,则INKEY()函数返回值为0,一直等到有按键开始时;如果键盘缓冲区中有多个按键值,则返回第一个输入到缓冲区的按键的值。 3.MESSAGEBOX()函数 MESSAGEBOX()函数显示一个用户自定义对话框。
Similar presentations