
vfp的数据类型和存储类型.ppt
37页第第三三章章 VFP的数据类型与存储类型的数据类型与存储类型 Visual FoxPro §3.1 3.1 数据数据类型类型 数据是反映客观事物属性的记录通常分为数值型和数据是反映客观事物属性的记录通常分为数值型和字符型两种基本类型数据类型一旦被定义,就确定了字符型两种基本类型数据类型一旦被定义,就确定了其存储方式和使用方式其存储方式和使用方式Visual FoxProVisual FoxPro系统将数据细系统将数据细化分为以下十三种类型化分为以下十三种类型 ((1 1))字符型字符型 ( ( Character ) Character ) 字符型(字符型(C C型)数据可型)数据可以包含任何可显示的以包含任何可显示的ASCIIASCII码字符,包括字母、数字、码字符,包括字母、数字、汉字、符号、空格等汉字、符号、空格等, ,长度范围是长度范围是0 0~~254254个字符,使用个字符,使用时必须用定界符单引号,双引号,方括号括起来时必须用定界符单引号,双引号,方括号括起来 ‘’、、 “”、、 [ ][ ] ((2 2))数值型数值型 ( ( Numeric ) Numeric ) 数值型(数值型(N N型)是由数字(型)是由数字(0 0~~9 9)、)、小数点和正负号组成。
最大长度为小数点和正负号组成最大长度为2020位(包括+、-和小数点)位(包括+、-和小数点) ((3 3))整型整型 ( ( Integer ) Integer ) 整型(整型(N N型)表示整数,仅用于字段变型)表示整数,仅用于字段变量,数据占量,数据占4 4个字节4 4))浮点型浮点型 ( ( Float ) Float ) 浮点型(浮点型(N N型)与数值型等价,为与其它型)与数值型等价,为与其它软件的兼容而设软件的兼容而设5 5))双精度型双精度型 ( ( Double ) Double ) 双精度型(双精度型(N N型)是更高精度的数型)是更高精度的数值型数据,只用于字段变量,固定占用值型数据,只用于字段变量,固定占用8 8个字节,并采用固定长度个字节,并采用固定长度浮点格式存储浮点格式存储 ((6 6))货币型货币型 ( ( Currency ) Currency ) 货币型(货币型(Y Y型)用来表示货币值,型)用来表示货币值, 系统默认的货币符号是系统默认的货币符号是“$ $” 。
((7 7))日期型日期型 ( ( Data ) Data ) 日期型(日期型(D D型)用于表示日期,用默认格型)用于表示日期,用默认格式式{ {mm/mm/dddd/ /yyyyyyyy} }来表示来表示,,长度固定为长度固定为8 8位,位,yyyyyyyy表示年表示年, ,占占4 4字节,字节,mmmm表示月表示月, ,占占2 2字节,字节,dddd表示日表示日, ,占占2 2字节8 8))日期时间型日期时间型 ( ( DataTimeDataTime ) ) 日期时间型数据是描述日期和时间日期时间型数据是描述日期和时间的数据 其默认格式为其默认格式为{ {mm/mm/dddd/ /yyyy hhyyyy hh:mm::mm:ssss} } 其中其中yyyyyyyy代表年代表年, ,前两个前两个mmmm代表月,代表月,dddd代表日,代表日,hhhh代表小时代表小时, ,后两后两个个mmmm代表分钟,代表分钟,ssss代表秒,长度固定为代表秒,长度固定为8 8位9 9))逻辑型逻辑型 ( ( Logical )Logical )逻辑型数据(逻辑型数据(LogicLogic))是描述客观事物真是描述客观事物真假的数据,用于表示逻辑判断结果。
假的数据,用于表示逻辑判断结果 逻辑型数据只有真(逻辑型数据只有真(. .T.T.))和假(和假(. .F.F.))两种值两种值,,长度固定为长度固定为1 1位位 ((1010))备注型备注型 ( ( Memo )Memo )备注型数据(备注型数据(MemoMemo))用于存放较长的字符用于存放较长的字符型数据类型可以把它看成是字符型数据的特殊形式型数据类型可以把它看成是字符型数据的特殊形式 备注型字段固定占备注型字段固定占4 4个字节,用来存储一个指向备注文件个字节,用来存储一个指向备注文件((. .FPTFPT))的指针,实际数据长度仅受限于现有的磁盘空间的指针,实际数据长度仅受限于现有的磁盘空间 ((1111))通用型通用型 ( ( General ) General ) 通用型(通用型(G G型)用于存储型)用于存储OLEOLE对象,对象,可以是电子表格、文档、图片等仅适用于表中的字段,固定占可以是电子表格、文档、图片等仅适用于表中的字段,固定占4 4个字节,实际数据长度仅受限于现有的磁盘空间个字节,实际数据长度仅受限于现有的磁盘空间。
((1212))字符型字符型(二进制)(二进制) 与字符类相似,但若代码页(不同与字符类相似,但若代码页(不同语系代码)改变时,其值并不会随之改变,即语系代码)改变时,其值并不会随之改变,即VFPVFP不会自动转换成不会自动转换成相应国家的语系相应国家的语系 ((1313))备注型备注型(二进制)(二进制) 与字符型(二进制)一样,当代码页改与字符型(二进制)一样,当代码页改变时,其值不会随之改变变时,其值不会随之改变 §3.2 3.2 数据数据存储类型存储类型(常量、变(常量、变 量)量) 3.2.13.2.1常量常量 在数据处理过程中其值不发生变化的量叫常量在数据处理过程中其值不发生变化的量叫常量 1.1.数值型数值型((N N型)型) 数值型常量是由数字数值型常量是由数字0 0—9 9、小数点、正负号和、小数点、正负号和 E E((科学计数法)科学计数法)组成的数值组成的数值 如如 整数整数:: 100 100 ,,-35-35 小数小数:: 2.543582.54358 科学计数法科学计数法 如如: 1.2: 1.2E+5 E+5 表示表示 1.21.2乘以乘以1010的的5 5次方。
次方 0.39260.3926E1, 2.7E02E1, 2.7E02 2.2.字符型字符型((C C型)型)字符型常量是由字符型常量是由“ ” 、、 ‘ ’、、 [ ][ ]括起来的字符或字符串括起来的字符或字符串例如,例如,“ABCDABCD”、、’No_4No_4’、、[ [北京北京] ] 、、“I I’m a studentm a student”等 注意:引号和括号必须是英文字符注意:引号和括号必须是英文字符 3.3. 逻辑型逻辑型((L L型)型) 只有逻辑只有逻辑“真真”值和逻辑值和逻辑“假假”值两个值,值两个值, 真真 : .: .T. T. 、、.t. .t. 、、.Y. .Y. 、、.y. .y. 假假: .: .F. F. 、、.f. .f. 、、. N. . N. 、、.n. .n. 4.4.货币型货币型((Y Y型)型) 货币型常数是以货币型常数是以“$ $”作为前缀的数值,作为前缀的数值, 如如$986.35$986.35、、 $1234.5678$1234.5678。
保留四位小数保留四位小数如:如:$231.12345$231.12345,实际在计算机里存放的是:,实际在计算机里存放的是:$231.1235$231.12355.5.日期型日期型((D D型)型) 日期常量是用日期常量是用 { } { } 括起来的日期形式的常量括起来的日期形式的常量 如如 {10/01/1992} ,{10/01/92}, {10-01-92} {10/01/1992} ,{10/01/92}, {10-01-92} 严格的日期格式严格的日期格式YMDYMD(VFP(VFP默认默认) ){^{^yyyyyyyy-mm--mm-dddd} }或或{^{^yyyyyyyy/mm//mm/dddd} } 如如 {^2000-09-20},{^2000/10/01} {^2000-09-20},{^2000/10/01} 6.6.日期时间型日期时间型((T T型)型) 日期时间型常量也用日期时间型常量也用{ }{ }括起来表示,括起来表示, 如如 {10/01/92 8:45}{10/01/92 8:45}严格的日期时间格式为:严格的日期时间格式为: { {^ ^yyyyyyyy-mm--mm-dddd [ [hhhh[:mm[:[:mm[:ssss]][a|p]]} ]][a|p]]} 或或 {^{^yyyyyyyy/mm//mm/dddd [ [hhhh[:mm[:[:mm[:ssss]][a|p]]} ]][a|p]]} 如如 {^2000-09-20 8:45}{^2000-09-20 8:45}2.3.22.3.2 变变 量量 在命令操作和程序运行过程中其值允许变化的量称为变量。
在命令操作和程序运行过程中其值允许变化的量称为变量 一、一、内存变量内存变量 定义内存变量时应取名并赋初值,变量建立后存储于内存中,定义内存变量时应取名并赋初值,变量建立后存储于内存中,并可以改变其值,直到清除该变量并可以改变其值,直到清除该变量 内存变量的命名规则内存变量的命名规则: 变量名可以由字母、数字、下划线和汉字组成,但第一变量名可以由字母、数字、下划线和汉字组成,但第一个字符不可以是数字,至多个字符不可以是数字,至多128128个字符,不可与系统保留字同个字符,不可与系统保留字同名 内存变量的定义和赋值内存变量的定义和赋值 在内存变量赋值同时在内存变量赋值同时, ,也定义了内存变量及数据类型也定义了内存变量及数据类型 [ [格式格式1] 1] STORE < STORE <表达式表达式> > TO
数组:按一定顺序排列的一组内存变量 “先定义后使用先定义后使用如定义:如定义:DIMENSION|DECLARE a(2,3),b(4)DIMENSION|DECLARE a(2,3),b(4) 赋值:赋值:a=4, b(1)=a=4, b(1)=“foxprofoxpro”” a(2,1)=3 a(2,1)=3等价等价a(4)=3a(4)= 三、三、字段变量字段变量表的各个字段都是字段变量表的各个字段都是字段变量use use 学生表学生表? ?学号学号go 5go 5? ?姓名姓名内存变量和字段变量同名时:字段变量优先,若要显示内存变量,内存变量和字段变量同名时:字段变量优先,若要显示内存变量,用用? ?m.m.编号或编号或? ?m->m->编号编号 四、四、记录记录记录是表中的一行字段的集合记录是表中的一行字段的集合五、五、对象对象对象是构成程序的基本单位和运行实体对象是构成程序的基本单位和运行实体§3.33.3函函 数数函数是系统内部预先编制好的一组程序,分别实现某些特定的运算函数是系统内部预先编制好的一组程序,分别实现某些特定的运算或操作。
或操作 函数的一般调用形式:函数的一般调用形式: < < 函数名函数名> ([<> ([<参数参数1>,<1>,<参数参数2>,2>,……]) ]) 其中函数名是系统规定的,参数可以是一个或多个,也可为空,其中函数名是系统规定的,参数可以是一个或多个,也可为空,即:函数名即:函数名()(),但圆括号不能省略但圆括号不能省略 VFPVFP提供了提供了200200余种函数,常用函数余种函数,常用函数 P50P50表表2.7~2.7~表表2.112.11 按功能可划分为:数学函数、字符串函数、日期和时间函数、类型按功能可划分为:数学函数、字符串函数、日期和时间函数、类型转换函数、测试函数转换函数、测试函数 1 1、数学函数、数学函数( (数值函数数值函数) ) (1)(1)求绝对函数求绝对函数ABSABS格式:格式:ABS(ABS(〈〈数值表达式数值表达式〉〉) ) ? ?ABS(- 4) ABS(- 4) 结果为4结果为4 (2)(2)求整函数求整函数INTINT格式:格式:INT(INT(〈〈数值表达式数值表达式〉〉) )? ? INT( 4.8) INT( 4.8) 结果为4结果为4 (3)(3)四舍五入函数四舍五入函数ROUNDROUND格式:格式:ROUND(ROUND(〈〈数值表达式数值表达式〉〉, ,〈〈保留小数位保留小数位〉〉) )功能:按保留小数位指定的位数对功能:按保留小数位指定的位数对〈〈数值表达式数值表达式〉〉的数值的数值进行四舍五入。
进行四舍五入 ?ROUNDROUND((3.14159,33.14159,3)) → → 3.1423.142?ROUND?ROUND((3.14159,03.14159,0)) → → 3 3(4)(4)指数函数指数函数EXPEXP、、平方根函数平方根函数SQRTSQRT、、格式:格式:EXP| SQRT (EXP| SQRT (〈〈数值表达式数值表达式〉〉) )? ?EXP(2) → 7.39EXP(2) → 7.39?SQRT (9) → 3?SQRT (9) → 3(5)(5)取模取模 ( (求余数求余数) )函数函数MODMOD格式:格式:MOD(MOD(〈〈数值表达式数值表达式1 1〉〉, , 〈〈数值表达式数值表达式2 2〉〉) )功能:取功能:取〈〈数值表达式数值表达式1 1〉〉除以除以〈〈数值表达式数值表达式2 2〉〉的余数 ?MOD(20,3) → 2 MOD(20,3) → 2 (6)(6)求最大值求最大值MAXMAX、、最小值最小值MINMIN格式:格式:MAX| MIN (MAX| MIN (〈〈表达式表达式1 1〉〉,,〈〈表达式表达式2 2〉〉) )功能:求功能:求〈〈表达式表达式1 1〉〉和和〈〈表达式表达式2 2〉〉中的大者、小者。
中的大者、小者 2 2、字符串函数、字符串函数(1)(1)判子字符串位置判子字符串位置ATAT格式:格式:AT(AT(〈〈字符表达式字符表达式1 1〉〉, ,〈〈字符表达式字符表达式2 2〉〉 , ,〈〈数值表达式数值表达式〉〉) )功能:求功能:求〈〈字符表达式字符表达式1 1〉〉在在〈〈字符表达式字符表达式2 2〉〉中第中第〈〈数值表达式数值表达式〉〉次出现的起始位置次出现的起始位置 〈〈数值表达式数值表达式〉〉 默认值为默认值为 1 1说明:说明:①①若若〈〈字符表达式字符表达式2 2〉〉中不包含中不包含〈〈字符表达式字符表达式1 1〉〉,则函数值为零;,则函数值为零;②②大小写字母在检索中视为不同大小写字母在检索中视为不同AT("OK","COMPUTER OKOK ",2) → 12?AT("OK","COMPUTER OKOK ",2) → 12?AT("?AT("数据数据","","计算机数据管理系统计算机数据管理系统") → 7") → 7? ?AT("BOOK","COMPUTER") → 0AT("BOOK","COMPUTER") → 0 (2)(2)求子串函数求子串函数SUBSTRSUBSTR格式:格式:SUBSTRSUBSTR〈〈字符表达式字符表达式〉〉,,〈〈起始位置起始位置〉〉[,[,〈〈长度长度〉〉]]功能:对功能:对〈〈字符表达式字符表达式〉〉从给定的从给定的〈〈起始位置起始位置〉〉开始截取指定开始截取指定长度的字符,生成一个新的字符串;长度的字符,生成一个新的字符串;? ?SUBSTR("110102490217041",7,6) → 490217SUBSTR("110102490217041",7,6) → 490217(3)(3)取左、右子串函数取左、右子串函数格式:格式:LEFT | RIGHT (LEFT | RIGHT (〈〈字符表达式字符表达式〉〉, ,〈〈数值表达式数值表达式〉〉) )功能:功能:LEFT LEFT 从从〈〈字符表达式字符表达式〉〉左边截取由左边截取由〈〈数值表达式数值表达式〉〉的值的值指定的字符,生成一个新的字符串;指定的字符,生成一个新的字符串;RIGHT RIGHT 从从〈〈字符表达式字符表达式〉〉右边截取由右边截取由〈〈数值表达式数值表达式〉〉的值指定的值指定的字符,生成一个新的字符串;的字符,生成一个新的字符串;? ?LEFT('FOXPROLEFT('FOXPRO数据库管理系统数据库管理系统',6) → ',6) → FOXPROFOXPRO?RIGHT('FOXPRO?RIGHT('FOXPRO数据库管理系统数据库管理系统',14) → ',14) → 数据库管理系统数据库管理系统 (4) (4) ALLTRIMALLTRIM删除首部和尾部空格删除首部和尾部空格格式:格式: ALLTRIM(ALLTRIM(〈〈字符表达式字符表达式〉〉) )功能:功能: ALLTRIMALLTRIM删除字符串首部和尾部的空格删除字符串首部和尾部的空格?ALLTRIM(?ALLTRIM(“ man man ”) → man) → man(5)(5)构造空格函数构造空格函数SPACESPACE格式:格式:SPACE(SPACE(〈〈数值表达式数值表达式〉〉) ) 功能:产生由功能:产生由〈〈数值表达式数值表达式〉〉的值决定的空格数。
的值决定的空格数 ?“姓名姓名”+ +SPACE(3)+SPACE(3)+“李宁李宁” → → 姓名姓名 李宁李宁(6) (6) 字符串长度函数字符串长度函数LENLEN格式:格式:LEN(LEN(〈〈字符表达式字符表达式〉〉) )功能:测定字符串的长度功能:测定字符串的长度( (字符个数字符个数) ) ?LEN('FOXPROLEN('FOXPRO数据库管理系统数据库管理系统') → 20') → 20(7) (7) 大小写字母转换函数大小写字母转换函数LOWER|UPPERLOWER|UPPER格式:格式: ( (〈〈字符表达式字符表达式〉〉) )功能:功能:LOWERLOWER把把〈〈字符表达式字符表达式〉〉中的大写字母转换为小写字母;中的大写字母转换为小写字母; UPPERUPPER把把〈〈字符表达式字符表达式〉〉中的小写字母转换为大写字母中的小写字母转换为大写字母 ?LOWER([FoxPro]) →LOWER([FoxPro]) → foxpro foxpro?UPPER([FoxPro]) → FOXPRO?UPPER([FoxPro]) → FOXPRO 3 3、、日期和时间函数日期和时间函数(1)(1)系统日期函数系统日期函数DATEDATE格式:格式:DATE()DATE() ??DATEDATE()() → → 99/11/1599/11/15(2)(2)系统时间函数系统时间函数TIMETIME格式:格式:TIME()TIME() ??TIMETIME()() → → 08:50:4308:50:43(3)(3)年、月、日函数年、月、日函数YEAR|MONTH|DAYYEAR|MONTH|DAY格式:格式:YEAR|MONTH|DAY(YEAR|MONTH|DAY(〈〈日期表达式日期表达式〉〉) )功能:从功能:从〈〈日期表达式日期表达式〉〉中求出年份、月份、日份的数值。
中求出年份、月份、日份的数值 ? ? DATE() → 99/11/15 DATE() → 99/11/15 ? YEAR(DATE()) → 1999 ? YEAR(DATE()) → 1999 ? MONTH(DATE()) → 11 ? MONTH(DATE()) → 11 ? DAY(DATE()) → 15 ? DAY(DATE()) → 4 4、、类型转换函数类型转换函数(1) (1) 字符转换为数值函数字符转换为数值函数VALVAL格式:格式:VAL(VAL(〈〈字符表达式字符表达式〉〉) )功能:将字符型数据转换为数值型数据功能:将字符型数据转换为数值型数据说明:说明: ① ①若若< <字符表达式字符表达式> >由数字字符和小数点组成由数字字符和小数点组成, ,则转换成相应的则转换成相应的数值数值, ,但只保留两位小数但只保留两位小数, ,其余小数四舍五入其余小数四舍五入 ② ②若若< <字符表达式字符表达式> >由非数字字符打头由非数字字符打头, ,则转换为则转换为0.000.00 ③ ③若若< <字符表达式字符表达式> >由数字字符打头由数字字符打头, ,且混有非数字字符时且混有非数字字符时, ,则转则转换到第一个非数字字符换到第一个非数字字符。
VAL("1234.5678") → 1234.57VAL("1234.5678") → 1234.57? VAL("FoxPro") → 0.00? VAL("FoxPro") → 0.00? VAL("1234FOX.5678") → 1234.00? VAL("1234FOX.5678") → (2) (2) 数值转换为字符函数数值转换为字符函数STRSTR格式:格式:STR(STR(〈〈数值表达式数值表达式〉〉[,[,〈〈长度长度〉〉][,][,〈〈小数位数小数位数〉〉]]))))功能功能: :把把〈〈数值表达式数值表达式〉〉的运算结果转换为指定长度的字符串的运算结果转换为指定长度的字符串 ? STR(1234.5678,7,2) → STR(1234.5678,7,2) → ‘ 1234.57 1234.57’(3) (3) 字符转换为日期函数字符转换为日期函数CTODCTOD格式:格式:CTOD(CTOD(〈〈字符表达式字符表达式〉〉) )功能功能: :将符合将符合yyyy/mm//mm/dddd 、、mm/mm/dddd/ /yyyy日期格式的字符串转换为相日期格式的字符串转换为相应日期。
应日期 ? ? CTOD(CTOD(‘99/11/1599/11/15’) → 99/11/15) → 99/11/15(4) (4) 日期转换为字符函数日期转换为字符函数DTOCDTOC格式:格式:DTOC(DTOC(〈〈日期表达式日期表达式〉〉) )功能:将功能:将< <日期表达式日期表达式> >转换为相应的字符串转换为相应的字符串说明:按说明:按mm/mm/dddd/ /yyyy格式转换;格式转换; ? ? DTOC(DATE())→ DTOC(DATE())→ ‘99/11/1599/11/15’ (5) (5) ASCIIASCII码值转换为字符函数码值转换为字符函数CHRCHR格式:格式:CHR(CHR(〈〈数值表达式数值表达式〉〉) )功能:将功能:将< <数值表达式数值表达式> >所表示的所表示的ASCIIASCII码值转换为码值转换为相应的字符相应的字符 ? CHR(65),CHR(97),CHR(48) → A a 0CHR(65),CHR(97),CHR(48) → A a 0(6) (6) 字符转换成字符转换成ASCIIASCII码值函数码值函数ASCASC格式:格式:ASC(ASC(〈〈字符表达式字符表达式〉〉) )功能:返回功能:返回< <字符表达式字符表达式> >最左边的一个字符的最左边的一个字符的ASCIIASCII码值。
码值 ? ? ASC('A'),ASC('a'),ASC('0') → 65 97 48ASC('A'),ASC('a'),ASC('0') → 65 97 485 5、测试函数、测试函数(1) (1) 记录号测试函数记录号测试函数 RECNORECNO格式:格式:RECNO(RECNO([[数值型表达式]数值型表达式]) )功能:给出功能:给出< <数值表达式数值表达式> >指定的工作区中打开的数据库的当前指定的工作区中打开的数据库的当前记录号2) (2) 文件起始测试函数文件起始测试函数 BOFBOF格式:格式:BOF(BOF([[数值型表达式]数值型表达式]) )功能:测试功能:测试< <数值表达式数值表达式> >指定的工作区中库文件记录指针是否指定的工作区中库文件记录指针是否指向起始位置是函数值为逻辑真(指向起始位置是函数值为逻辑真(. .T.T.),),否则为假(否则为假(. .F.F.)3) (3) 文件结束测试函数文件结束测试函数 EOFEOF格式:格式:EOF(EOF([[数值型表达式]数值型表达式]) )功能:测试功能:测试< <数值表达式数值表达式> >指定工作区中库文件记录指针是否指指定工作区中库文件记录指针是否指向结束位置。
是函数值为逻辑真(向结束位置是函数值为逻辑真(. .T.T.),),否则函数值为假否则函数值为假((. .F.F.) (4) (4) 文件测试函数文件测试函数 FILEFILE格式:格式:FILE(FILE(〈〈文件名文件名〉〉) )功能:测试功能:测试< <字符表达式字符表达式> >指定的磁盘文件是否存在,若指定的磁盘文件是否存在,若存在,函数值为逻辑真(存在,函数值为逻辑真(. .T.T.)), ,否则函数值为假否则函数值为假(.(.F.)F.)5) (5) 记录测试函数记录测试函数 RECOUNTRECOUNT格式:格式:RECOUNT(RECOUNT([[数值型表达式]数值型表达式]) )功能功能: :测试测试< <数值表达式数值表达式> >指定的工作区中数据库的记录个指定的工作区中数据库的记录个数 (6) (6) 数据类型测试函数数据类型测试函数 TYPETYPE TYPE( TYPE(“〈〈字符表达式字符表达式〉〉”) ) 返回表达式类型,返回表达式类型,如如 N N,,C C,,D D,,L L等等? ?TYPE("date()")TYPE("date()")?TYPE(?TYPE(“[ [字符表达式字符表达式] ]”) ) ?TYPE(".t.")?TYPE(".t.")(7) (7) 检索测试函数检索测试函数 FOUNDFOUND与与LOCATE LOCATE ,,SEEKSEEK,,FINDFIND,,CONTINUECONTINUE等同用,查到返回等同用,查到返回. .T.T.,,否则否则. .F.F.(8) (8) 库文件名测试函数库文件名测试函数 DBF DBF 返回当前工作区打开的表名返回当前工作区打开的表名§3.4 §3.4 表达式表达式 常量、变量、函数通过运算符连接起来构成表达式。
常量、变量、函数通过运算符连接起来构成表达式VFPVFP中的表达式有算术表达式、字符表达式、日期表达式、关系表中的表达式有算术表达式、字符表达式、日期表达式、关系表达式、逻辑表达式达式、逻辑表达式1.1.算术表达式:算术表达式:由常量、变量、函数和算术运算符构成由常量、变量、函数和算术运算符构成运算符号:(运算符号:( )) 括号括号 ** **或或∧ ∧ 乘方乘方, , 例:例:3**2 3**2 或或 3^2 3^2 * *、、/ / 乘、除乘、除 % % 取模(余数),例:取模(余数),例:15%4 15%4 结果是结果是3 3 + +、、- - 加、减(单目运算为加、减(单目运算为“+ +”、、“- -”号)号) 优先次序同数学相同优先次序同数学相同如一元二次方程的一个根如一元二次方程的一个根: : (-(-b+b+sqrtsqrt(b**2-4*a*c))/(2*a)(b**2-4*a*c))/(2*a)2.2.字符表达式:字符表达式:由常量、变量、函数和字符算术运算符构成。
由常量、变量、函数和字符算术运算符构成字符运算符有两个:完全链接字符运算符有两个:完全链接( ( +) +)和去空和去空链接链接( ( -)-)+ : : 将几个字符串连接成一个新字符串将几个字符串连接成一个新字符串 例:例:?"ABCD" + "EFGH" + " 1234" ?"ABCD" + "EFGH" + " 1234" 结果为:结果为:”ABCDEFGH 1234ABCDEFGH 1234” - : : 将第一个字符串尾部空格移到后面一个字符串末尾后,连将第一个字符串尾部空格移到后面一个字符串末尾后,连接成一个新字符串接成一个新字符串 例:例:? "? "莆田莆田 " " –" "学院学院" + "" + "会计系会计系" " 结果为结果为: : “莆田学院 会计系莆田学院 会计系” ?"?"莆田莆田 " -"" -"学院学院" - "" - "机电系机电系"+""+"通信专业通信专业" "3.3.日期表达式:日期及时间运算符有日期表达式:日期及时间运算符有“+ +”和和“- -” 日期及日期时间型表达式的运算有三种情况:日期及日期时间型表达式的运算有三种情况:((1 1))两个日期(时间)型数据相减,表示两个日期相差天数。
两个日期(时间)型数据相减,表示两个日期相差天数 例:例:?{^2000-10-01} - {^2000-09-01} ?{^2000-10-01} - {^2000-09-01} 结果为结果为3030,表示,表示两个日期相距两个日期相距3030天2 2))一个日期(时间)型数据加一个表示天数的数值型数据,结一个日期(时间)型数据加一个表示天数的数值型数据,结果是一个向后推算的日期(时间)型数据果是一个向后推算的日期(时间)型数据 例:例:?{^2000-09-01} + 60 ?{^2000-09-01} + 60 结果为结果为{^2000-10-31} {^2000-10-31} ?{?{^2000-09-01 17:34}+60^2000-09-01 17:34}+60结果为结果为{^2000-09-01 17:35}{^2000-09-01 17:35}((3 3))一个日期(时间)型数据减一个表示天数的数值型数据,结一个日期(时间)型数据减一个表示天数的数值型数据,结果是一个向前推算的日期(时间)型数据。
果是一个向前推算的日期(时间)型数据 例:例:?{^2000-09-01} ?{^2000-09-01} – 30 30 结果为结果为{^2000-08-02}{^2000-08-02}4.4.关系表达式:关系表达式对同一类型的数据进行比较运算,比较的关系表达式:关系表达式对同一类型的数据进行比较运算,比较的结果符合逻辑结果符合逻辑, , 其值为其值为. .T.T.;;否则为否则为. .F.F. 关系运算符为:关系运算符为: = =、、 < <、、 > >、、 <=<=、、 >=>=、、 <><>或或# #、、 = == =、、 $ $等于等于 小于小于 大于大于 小于等于小于等于 大于等于大于等于 不等于不等于 全等于全等于 子字符串比较子字符串比较 运算规则运算规则 ①①数值型数据按数值的大小比较数值型数据按数值的大小比较 ② ②字符型数据按字符从左到右比较字符型数据按字符从左到右比较 ③ ③日期型数据按年、月、日顺序比较日期型数据按年、月、日顺序比较 ④ ④使用使用“= =”比较字符串时,系统默认为非精确比较,即当比较字符串时,系统默认为非精确比较,即当“= =”左边左边的字符串与右边的字符串的前半部分或全部相当时,系统均认为相等,的字符串与右边的字符串的前半部分或全部相当时,系统均认为相等,即即 .T. .T. 。
如:如:? ? ‘ABCDEABCDE’= =‘ABCABC’ → .T. → .T. 可以使用可以使用SET EXACT ON | OFFSET EXACT ON | OFF命令设置精确比较或非精确比较命令设置精确比较或非精确比较例:例: ? 2+3=6 → .? 2+3=6 → .F.F.? ? ‘C1C1’< <‘C2C2’ → .T. → .T. ? ? ‘ABCABC’= == =‘ABCDEABCDE’ → .F. → .F.?'CD'$'ABCDEF' → .T.?'CD'$'ABCDEF' → .T.? 'BD'$'ABCDEF' → .F.? 'BD'$'ABCDEF' → .F. SET EXACT OFF ((非精确比较)非精确比较) ? ? ‘ABCDEABCDE’= =‘ABCABC’ → .T. → .T. ? ? ‘ABCABC’= = ‘ABCDEABCDE’ → .F. → .F.SET EXACT ON ((精确比较)精确比较)? ? ‘ABCDEABCDE’= =‘ABCABC’ →.F. →.F.? ? ‘ABCABC’= =‘ABCDEABCDE’ → .F. → .F.5.5.逻辑表达式:逻辑表达式:两个或两个以上的关系表达式,及逻辑型常量、变量、函数,之间两个或两个以上的关系表达式,及逻辑型常量、变量、函数,之间用逻辑运算符连接起来,构成逻辑表达式。
用逻辑运算符连接起来,构成逻辑表达式运算符运算符:: . .NOT. .AND. NOT. .AND. .OR. .OR. 圆点圆点 可以省略可以省略运算规则运算规则: 逻辑非(逻辑非(. .NOT.NOT.)): : 对对(.(.NOT.)NOT.)右边的右边的L L型数据求反型数据求反; ; 逻辑与(逻辑与(. .AND.AND.):):当当. .AND.AND.两边为真时,结果才为真(两边为真时,结果才为真(. .T.T.);); 逻辑或(逻辑或(. .OR .OR .):):当当. .OR .OR .两边至少一个为真时,结果为(两边至少一个为真时,结果为(. .T.T.)优先次序优先次序:逻辑非逻辑非→→逻辑与逻辑与→→逻辑或逻辑或运算结果运算结果: . .T. T. 或或 . .F. F. 6.6.运算的优先顺序:运算的优先顺序:课本课本P49 P49 表表3-83-8 算术运算算术运算→→关系运算关系运算→→逻辑运算逻辑运算 ()括号最优先()括号最优先 习题参考答案:B1、已知每年的圣诞节日期为12月25日,那么2002年圣诞节与元旦(1月1日)相差的天数是( )。
A) 356 B) 358 C) 360 D) 362参考答案:C2、要从数值型数据123中取出数值23,如果限制函数嵌套,则最适合采用的函数是( )A) int() B) round() C) mod() D) exp()参考答案:B3、substr(“123456789”,len(“fox”),len(“pro”))的计算结果是( )A) 123 B) 345 C) 567 D) 789参考答案:A4、在下列函数中,函数值为数值的是( )A) at('fox','visual foxpro') B) ctod('01/01/96') C)bof() D) substr(dtoc(date( )),7) 参考答案:B5、若rsk.dbf有20条记录,执行下列命令序列后,显示结果为( )use rskskip 2goto 6skip –2? recno( )A) 6 B) 4 C) 8 D) 2参考答案:B6、表达式val("a2")*len("foxpro")的值是( )。
A) a2*foxpro B) 0 C) a2foxpro D) 12参考答案:D7、下列字符串的运算结果为.f.的表达式为( )A) "fort" $ "comfortable" B) "computer"="comp" C) "former"=="former" D) "computer"=="comp"参考答案:D8、顺序执行以下赋值命令后,下列表达式中,合法的表达式是( ) x="12" y=2*3 z=left("foxpro",3)A) x+y B) y+z C) x-z+y D) x-x+z-z 参考答案:A9、已知变量a的值为.t.,变量b和c的值均为.f.,则下列表达式值为.f.的选项为( )A) b and c or not a B) a or b and not cC) not c and a or b D) a and b or not c参考答案:C10、在下列表达式中,错误的表达式是( )。
A) {^2000-06-01}-10 B) {^2000-06-01}-date()C) {^2000-06-01}+date() D) {^2000-06-01}+10 。
