版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、VisualFoxPro数据与数据运算(第四章),数据记录客观事物属性的值,通常分为不同的数据类型,数据类型是数据的基本属性.VisualFoxPro中提供了多种数据类型的数据,数据类型一旦被定义,就确定了他的存储方式和使用方式. VisualFoxPro提供了以下几种数据类型:,4.1 数据类型,常量是指在程序运行过程中始终保持不变的数据。,4.2 常量和变量,变量,常量,变量是在程序运行的不同时刻,其值会发生改变的量,常量包括备注型和通用型以外的所有数据类型,主要有: 1.数值型常量 由数字、小数点、正负号组成,数据最大精度为16位有效数据; 数据最大长度为20位,其中小数点占1位。 2.
2、字符型常量 字符型常量是用定界符界定的一串字符。常用的定界符有单引号、双引号“”、和方括号 等。如果定界符成为常量的组成部分,则应使用另外的定界符。字符型常量最大长度为254位。,4.2.1 常量,3.日期型与日期时间型常量 日期型与日期时间型常量是用 括起来的一个包括日期和时间的数据,其有效性取决于格式的设置。空的时间值可用/:表示。 4.逻辑型常量 逻辑型常量只有真假两个值。用.T.或.t.、.Y.或.y.表示逻辑值为真,用.F.或.f.、.N.或.n.表示逻辑值为假。字母两边的英文句点不能省略。 5.货币型常量 货币型常量用于表示货币值。使用时应加上货币符号。,在Visual FoxPr
3、o中,常用的变量类型有:内存变量、字段变量、数组变量和系统变量。 内存变量是独立于数据库以外,存储在内存中的临时变量。它通常用于存放程序运行过程中所需要的原始数据、中间结果以及最终结果。 内存变量的数据类型由它所保存的数据的类型决定。当用户退出Visual FoxPro时,内存变量将自动消失。 需要注意的是:当内存变量与字段同名时,若要使用内存变量,那么要在引用的内存变量名称之前添加“M.”。,4.2.2 变量,字段变量是用户在定义表结构时所定义的字段名,它是一种多值变量。 数组变量是一种特殊的内存变量。它是指一组有序的数据的集合,数组中的各元素称为数组元素。 系统变量是Visual FoxP
4、ro建立并维护的内存变量。这些变量的名称由系统定义,并且以下划线“_”开头。 变量的类型与常量类型相同。每一个变量的具体类型取决于其被赋予的值,因此在不同时刻,一个变量可以存放不同类型的数据。这里我们将主要讨论内存变量。,1.使用STORE命令为内存变量赋值 命令格式:STORE eExpression TO VarNameList | ArrayNameList 命令功能:该命令用于为内存变量或数组变量赋值。 命令说明: (1)eExpression参数是一个表达式。该表达式可以由常量、变量、函数和运算符组成。该命令将表达式的值赋予内存变量或数组变量。 (2)VarNameList参数是内存
5、变量列表。内存变量列表中的内存变量应用逗号分隔。该命令可以同时为多个内存变量赋值。 (3)ArrayNameList参数是数组变量列表。数组变量列表中的数组变量应用逗号分隔。 (4)该命令可以同时为多个内存变量或数组变量赋值。 【例】store 3*4 to a1,a2,2.直接为内存变量赋值 使用“=”可以直接为内存变量赋值。 【例】 b1=3 将b1赋值3; b2=b1+2 将b1加2后的值赋给b2,此时b2等于5; b2=b2+3 将b2加3后的值再赋给b2,此时b2等于8。 说明:一个变量的值可以不断变化,最终结果是它最后一次的赋值。 3.显示内存变量 可以使用 DISPLAY MEM
6、ORY命令或LIST MEMORY命令来查看已定义的变量。 命令格式:DISPLAY MEMORY 或 LIST MEMORY 命令功能:该命令用于显示已定义的变量。,4.释放内存变量 为了节省存储空间,变量使用完以后应及时释放,可以使用以下命令之一来释放存储空间: lRELEASE ALL命令 命令格式:RELEASE ALL 命令功能:该命令用于释放全部变量。 lRELEASE 命令 命令格式:RELEASE 命令功能:该命令用于释放指定的内存变量。 命令说明:MemVarList参数是内存变量列表。,lRELEASE ALL LIKE LIKE Skeleton | EXCEPT Ske
7、leton 命令 命令格式:RELEASE ALL LIKE Skeleton | EXCEPT Skeleton 命令功能:该命令用于释放与指定模式相匹配的变量。 命令说明 (1)LIKE Skeleton子句用于指定要释放与指定的模式相匹配的所有变量。Skeleton参数是含有通配符的模式。通配符“*”可以匹配一个字符串;通配符“?”可以匹配一个字符。 (2)EXCEPT Skeleton子句用于指定要释放除与指定的模式相匹配之外的所有变量。Skeleton参数是含有通配符的模式。,lCLEAR MEMORY命令 命令格式:CLEAR MEMORY 命令功能:该命令用于释放全部变量。 【例
8、】 RELEASE a1,a2 释放变量a1,a2 RELEASE ALL LIKE a* 释放以字母a开头的变量,数组是按一定顺序排列的一组内存变量的集合,数组中的变量称为数组元素。数组必须先定义后使用。 命令格式 DIMENSION ArrayName1(nRows1 , nColumns1) , ArrayName2(nRows2 , nColumns2) . 或 DECLARE ArrayName1 (nRows1 , nColumns1) , ArrayName2 (nRows2 , nColumns2) . 命令功能:该命令用于定义一维或二维数组。,3 数组,命令说明: (1)DI
9、MENSION命令和DECLARE命令可以一次定义多个数组。 (2)只设置nRows参数时,定义一维数组;同时设置nRows 和nColumns参数时,定义二维数组。 (3)系统规定nRows和nColumns参数的下界为1。 (4)数组元素可以包含各种类型的数据,第一次定义时被赋值为.F.。 【例】DIMENSION A(3),B(2,3),表达式是指用运算符将常量、变量、字段或函数连接起来的有意义的式子。其类型由表达式最终计算结果的数据类型决定,主要有:数值型、字符型、日期型、关系型、逻辑型。运算符包括:算术运算符、字符运算符、关系运算符、逻辑运算符。不同表达式使用的运算符不同,但运算符两
10、边的数据类型必须相同,否则将导致因数据类型不匹配而出错。,4-3 表达式与运算符,数值表达式是由算术运算符将常量、变量、字段或函数连接起来的式子,其结果仍为数值型数据。 算术运算符有:+、-、*、/、* 或 、 优先级为:*()、*、/、+、- 同一优先级的按从左到右计算。 【例】?(3*4+SQRT(25)/5)*4 结果为52,4.3.1 数值表达式,字符表达式是由字符运算符将常量、变量、字段或函数连接起来的式子,其结果仍为字符型数据。在字符运算符两边的数据必须是字符型数据。 字符运算符有“+”和“-”两种。 (1)直接连接 (+) 即用“+”将两个或多个字符串首尾连接形成一个新的字符串。
11、 (2)去空连接 (-) 即用“-”将两个或多个字符串相连接。如果前一个字符串尾部有空格,则将此空格移到后一个字符串的尾部。 【例】 ? “ABC ”+“DEF” =“ABC DEF” ? “ABC ”- “DEF”=“ABCDEF ”,4.3.2 字符表达式,日期表达式是由、运算符将日期连接起来的表达式,其结果仍为日期型数据。 【例】 ? 04/03/99+20 结果为04/23/99 ? 04/03/99- 20 结果为03/14/99 ? 04/03/99- 03/14/99 结果为20(两日期相距的天数) 需要注意的是:两个日期值相加是无意义的。,4.3.3 日期表达式,关系表达式是由
12、关系运算符将数值表达式、字符表达式、日期表达式连接起来的表达式,结果为逻辑真和逻辑假,分别用.T.和.F.表示。 关系运算符有:、 =、 (!=、#)、=、 = =、$ 说明: (1) =与= =不完全相同。前者称为普通比较,后者称为精确比较。 当环境设定为SET EXACT ON时,二者并无区别;当环境设定为SET EXACT OFF时,结果是不同的。比较时,使用右字符串去比较左字符串。当右字符串比较完,则比较结束。如果此时的比较结果相同,则=比较的值为.T.,而不管左字符串是否结束;相反,= =则要求左右必须完全一致,结果才为.T. 。 【例】 ?“abcde” = “abc” 当设置了S
13、ET EXACT OFF时,上述关系表达式结果为.T. 当设置了SET EXACT ON时,上述关系表达式结果为.F.,4.3.4 关系表达式,(2)比较大小时,日期早的日期型数据小于日期晚的日期型数据;字符型数据从左到右依次按其ASCII码值比较。 (3)字符串包含运算符“$”用于比较左字符串是否存在于右字符串中。 如果存在,则为.T.,反之为.F.。 【例】 ? “王”$“王红” 结果为.T.,逻辑表达式是由逻辑运算符将关系表达式连接起来的表达式,结果为逻辑真和逻辑假。 逻辑运算符有:.NOT.、.AND.和.OR.。 优先级别依此是:.NOT.、.AND.、.OR.。 运算规则为: 使用
14、.NOT.运算的表达式为假,则逻辑表达式的值为真。 使用.AND.连接的两个表达式的值同时为真,逻辑表达式的值为真; 使用.OR.连接的两个表达式的值,只要有一个为真,则逻辑表达式的值为真。,4.3.5 逻辑表达式,【例】 83 .and. 8 “c” .or. “a”=28 结果为.T. ? 性别=“女”.OR.年龄28 结果为.T.,4.3.5 逻辑表达式,Visual FoxPro提供了大量的函数,按返回值的类型或功能主要分为以下几类。,4-4 函数,数值型函数,日期函数,字符型函数,转换函数,测试函数,(1)绝对值函数 格式:ABS () 功能:求数值表达式的绝对值。 【例】 ? AB
15、S (-12.34) 结果为12.34 (2)最大值函数 格式:MAX (,) 功能:计算数值表达式的值,取较大者。 【例】? MAX(5*4,60/2) 结果为30,2.4.1 数值型函数,(3)最小值函数 格式:MIN (,) 功能:计算数值表达式的值,取较小者。 (4)平方根函数 格式:SQRT () 功能:计算数值表达式的平方根。 【例】? SQRT (25*4) 结果为10,(5)指数函数 格式:EXP () 功能:计算以e为底的指数幂。 【例】? EXP (2*2) 结果为54.60 (6)对数函数 格式:LOG () 功能:计算数值表达式的自然对数。 【例】? LOG (54.6
16、0) 结果为4.00,(7)四舍五入函数 格式:ROUND (,) 功能:计算数值表达式的值,根据保留位数进行四舍五入。如果保留小数位数为正数n,则对小数点后n +1位四舍五入,如果保留小数位数为负数n,则对小数点前n 位四舍五入。 【例】 ? ROUND (123.34567,3) 结果为123.346 ? ROUND (123.34567,-2) 结果为100,(8)取整函数 格式:INT () 功能:计算数值表达式的值,取整数部分。 【例】? INT (-4.68) 结果为-4 (9)求模函数 格式:MOD( ,) 功能:求出除以的得到的余数. 【例】? MOD(0,35) ? MOD(
17、15,4) ? MOD(15,-10),字符型函数主要对字符型数据进行运算。 (1)查找子串函数 格式: AT (, ) 功能:查找字符表达式1在字符表达式2中的起始位置。如果有数值表达式n,则确定字符型表达式1在字符型表达式2中的第n次出现的起始位置;如果未指明数值表达式n,则确定第一次出现的起始位置;如果字符表达式1不在字符表达式2中,则返回值为0。 【例】 ? AT (“A”,“BCDE”) 结果为0 ? AT (“A”,“ABADE”) 结果为1 ? AT (“A”,“ABCADE”,2) 结果为4,4.4.2 字符型函数,(2)截取子串函数 格式: SUBSTR (, ) 功能:从指
18、定的起始位置开始,在字符表达式中截取指定长度的字符串。 说明:假设起始位置为m,长度为n。若省略n,则从m开始截取以后的所有字符串; 若n大于从m开始的字符串长度,则从m开始截取以后的所有字符串;若m大于字符表达式的长度,则截取的字符串为空白字符串。 ? SUBSTR (“HARDWORK”,3,4) 结果为“RDWO” ? SUBSTR (“HARDWORK”,2) 结果为“ARDWORK” ? SUBSTR (“HARDWORK”,3,9) 结果为“RDWORK” ? SUBSTR (“HARDWORK”,9,5) 结果为“ ”,(3)左截取子串函数 格式:LEFT (,) 功能:从字符表
19、达式左边开始,截取指定长度的字符串。 【例】? LEFT (“HARDWORK”,3) 结果为“HAR” (4)右截取子串函数 格式:RIGHT (,) 功能:从字符表达式右边开始向左截取指定长度的字符串。 【例】? RIGHT (“HARDWORK”,3) 结果为“ORK” (5)生成空字符串函数 格式:SPACE () 【例】? SPACE (3) 结果为“ ”,(6)重复字符串函数 格式:REPLICATE (,) 功能:将字符表达式重复指定的次数。 【例】? REPLICATE (“*”,3) 结果为“*” (7)字符串长度函数 格式:LEN () 功能:求字符串的长度(包括空格)。
20、【例】? LEN (“how are you”) 结果为11,(8)字符串替换函数 格式: STUFF (, ,) 功能:从指定的起始位置开始,用字符表达式2替换字符表达式1中指定个数的字符串。 说明:若的长度大于起始位置以后的字符串个数,则替换起始位置以后的所有字符串。替换与被替换的字符的长度无关。 【例】?STUFF (“computer”,3,4, “abc”) 结果为“coabcer” ?STUFF (“computer”,3,1, “abc”) 结果为“coabcputer” ?STUFF (“computer”,3,4,“ ”) 结果为“co er”,(9)宏替换函数 & 格式:&
21、(字符型变量名) . 功能:&函数用于代换一个字符型变量的内容,如果宏替换函数与后面的字符间无空格分界时,宏替换函数后面应加“.”。宏替换函数可以嵌套。 【例】Store HELLO to h1 ? &h1 (10)删除字符串尾部空格函数 格式:RTRIM (),(11)删除字符串首部空格函数 格式: RTRIM () (12)删除字符串首部和尾部空格函数 格式: ALLTRIM () 功能:生成指定空格数的空字符串。 (13)大写变小写函数 格式: LOWER () (14)小写变大写函数 格式:UPPER (),(1)系统时间函数 格式:TIME ( ) 功能:输出系统当前时间。时间格式为
22、HH:MM:SS 【例】? TIME ( ) (2)系统日期时间 格式:DATE ( ) 功能:输出系统当前日期。系统默认格式为MDY,可以使用SET DATE命令自行设定日期输出格式。 【例】 SET DATE TO YMD ? DATE ( ) 假设当前日期为2001/2/17,那么结果为 01/02/17,4.4.3 日期函数,(3)年函数 格式:YEAR () 功能:输出日期型表达式的年份。 【例】? YEAR (DATE( ) 假设当前日期为2001/2/17,那么结果为 2001 (4)月函数 格式:MONTH () 功能:输出日期型表达式的月份。 【例】? MONTH (DATE
23、( ) 假设当前日期为2001/2/17,那么结果为2 (5)日函数 格式:DAY () 功能:输出日期型表达式的日。 【例】? DAY (DATE( ) 假设当前日期为2001/2/17,那么结果为 17,(6)星期函数 格式:DOW () CDOW () 功能:DOW( ) 返回用数字1-7表示的星期值;1表示星期天,2表示星期一,7表示星期六。CDOW( ) 返回星期的英文名称。 【例】 ? DOW (DATE( ) 假设当前日期为2001/2/17,那么结果为 7 ? CDOW (DATE ( ) 假设当前日期为2001/2/17,那么结果为Saturday,数据的运算要求符合数据类型
24、一致的原则,因此,若要对不同类型的数据进行运算,那么必须通过转换函数将其转换为一致的数据类型。 (1)数值型转换为字符型函数 格式:STR (,) 功能:将数值表达式按设定的长度和小数位数转换成字符型数据。 说明:为转换后的字符串位数,若的设定值大于实际数值,则转换后的字符串前补“空格”,若的设定值小于实际数值,则用*代替;若的设定值大于实际数值,则转换后的字符串后补0,若的设定值小于实际数值,则对小数四舍五入。小数点和负号均占有1位。 【例】 ? STR (123.4567,6,2) 结果为 123.46 ? STR (123.4567,9,2) 结果为 123.46 ? STR (123.
25、4567,6,3) 结果为 123.46 ? STR (123.4567,1,2) 结果为 *,4.4.4 转换函数,(2)字符型转换为数值型函数 格式:VAL () 功能:将数字字符串转换为数值。 说明:转换时遇到非数字字符时停止;若第一个字符就不是数字,则值为0.00 【例】VAL (“123.45AB”) 结果为123.45 VAL (“A123.45AB”) 结果为0.00 (3)字符转换为ASCII函数 格式:ASC () 功能:返回字符表达式第一个字符的ASCII码值。 【例】ASC (“abc”) 结果为97 (4)ASCII码转换为字符函数 格式:CHR () 功能:将ASCI
26、I码转化为相应的字符。 【例】CHR (65) 结果为A (5)日期型转换为字符型函数 格式: DTOC ( ,1 ),功能:将日期型表达式转换为字符串。 说明:若使用选项,1,则转换为年月日的形式。 【例】? DTOC (DATE( ) 假设当前日期为2001/2/17,那么结果为02/17/01 ? DTOC (DATE( ), 1) 假设当前日期为2001/2/17,那么结果为20010217 (6)字符型转换为日期型函数 格式:CTOD () 功能:将字符型表达式转换为日期值。 【例】? CTOD (“02/17/64”) 结果为02/17/64 (7)大写字母转换为小写字母函数 格式
27、:LOWER () 功能:将字符型表达式中的大写字母转换为小写字母。 【例】? LOWER (“AaBbCc”) 结果为aabbcc (8)小写字母转换为大写字母函数 格式:UPPER () 功能:将字符型表达式中的小写字母转换为大写字母。 【例】? UPPER (“AaBbCc”) 结果为AABBCC,(1)文件开始测试函数 格式:BOF ( ) 功能:测试记录指针是否指向第一条记录之前。 (2)文件结束测试函数 格式:EOF ( ) 功能:测试记录指针是否指向最后一条记录之后。 【例】 USE GZ ?BOF ( ) 结果为.f. SKIP1 ?BOF ( ) 结果为.t. GO BOTTOM ?EOF ( ) 结果为.f.,4.4.5 测试函数,SKIP ? EOF ( ) 结果为.t. (3)检索测试函数 格式:FOUND (
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2027年江西建设职业学院高职单招职业适应性测试考试题库含答案详解【模拟题】
- 2024年四川省内江市单招综合素质考试题库附参考答案详解(达标题)
- 2025年河南鹿邑职业学院高职单招职业适应性测试考试模拟试卷有答案详解
- 2026年承德石油高专高职单招职业技能考试模拟试卷及完整答案详解【易错题】
- 2027年电子科技大学成都学院专科高职单招职业适应性测试考试题库【轻巧夺冠】附答案详解
- 2024年山东寿光职业学院单招综合素质考试模拟试卷及完整答案详解【夺冠系列】
- 2026年母猪河职业学院高职单招职业技能考试题库汇编附答案详解
- 2024年秦达专修高职学院高职单招职业技能考试题库附参考答案详解(夺分金卷)
- 2027年河南省南阳市单招职业技能考试模拟试卷及答案详解一套
- 2025年湖南省长沙市单招职业技能考试题库【考点精练】附答案详解
- 2026年医师定期考核考试题及参考答案
- 2026年1月浙江省选考物理试题及参考答案
- 2026年数据治理师物流方向中级笔试模拟题
- 2026科威特水处理行业市场供需分析及前景规划分析研究报告
- (新2024)2026秋九上英语 Unit 1“The Changing World”词汇精讲
- 2026年幼儿教师选调考试试题及答案
- 胸壁继发恶性肿瘤的护理
- 2025年07月中华联合财产保险股份有限公司池州中心支公司招考1名内勤岗位人员笔试历年典型考点题库附带答案详解试卷2套
- 实施指南(2026)《YBT 6201-2024蜂窝密封用高温合金箔材》
- TRIZ基础知识教学课件
- 雨课堂学堂在线学堂云《导弹总体设计导论(国防科技)》单元测试考核答案
评论
0/150
提交评论