数据类型、函数与表达式VFP6.0考级专用.ppt
Visual FoxPro 6.0 程序设计与应用教程,第三章,数据类型、函数与表达式,3.1 数据类型 VFP提供11种的数据类型,字符型(Character C):由任意字符(字母、汉字、数字、空格、符号等)组成 每个字符占一个字节,长度为0254,最多可有254个 字符型的常量要用英文的单引号、双引号或方括号括起来(不可用中文标点)如:A0001、数学系数值型(Numeric N):表示数量 由数字09、一个正负符号(或)和小数点(.)组成。数值型数据取值的范围是:-0.9999999999E+190.9999999999E+20内存变量18字节,字段变量120字节小数点和小数位数是字段总长度的一部分,整型(Integer N)用于存储无小数部分的数值,只能用于数据表中字段的定义。在数据表中,整型字段占用4个字节,取值范围是:-21474836472147483647整型以二进制形式存储,不像数值型那样需要转换成ASCII字符存储。浮点型(Float N)只能用于数据表中字段的定义,包含此类型是为了提供兼容性,浮点型在功能上与数值型等价。,双精度型(Double N)用于取代数值型,以便能提供更高的数值精度。双精度型只能用于数据表中字段的定义,它采用固定存储长度的浮点数形式。与数值型不同,双精度型数据的小数点的位置是由输入的数据值来决定的。每个双精度型数据占8个字节。货币型(Currency Y)在使用货币值时,可以使用货币型来代替数值型。货币型数据取值的范围是:-922337203685477.5807922337203685477.5807小数位数超过4位时,系统将进行四舍五入的处理。每个货币型数据占8个字节。当涉及货币时使用,使用货币型数据要在前面加上符号$,如:$100,日期型(Date D)用于存储不带时间的日期值,宽度为8字节日期型数据的存储格式为yyyymmdd其中yyyy为年,占4位,mm为月,占2位,dd为日,占2位。日期型数据取值的范围是:公元0001年1月1日公元9999年12月31日。日期型数据的表示有多种格式,最常用的格式为 mm/ddyyyy。系统默认格式为mm/dd/yy,可通过SET DATE、SET MARK、SET CENTURY命令设置日期格式,或通过系统的选项对话框中的区域卡中设置。日期型常量要放在花括号中,如:dDate=09/10/2001 dBlank=:空日期,常用格式:标准ANSI:yy.mm.dd*美国式AMERICAN:mm/dd/yy 欧州式BRITISH:dd/mm/yy输入日期时,其日期输入格式由STRICTDATE设置决定设置SET STRICTDATE TO 1须按严格的日期输入方式:?1999/11/12年月日时分秒:1999/11/12 4:2:5设置SETSTRICTDATETO0则可用通常的日期输入方式,日期时间型(DateTime T)用以保存日期和时间值。日期时间型数据的存储格式为 yyyymmddhhmmss其中yyyy为年,占4位,mm为月,占2位,dd为日,占2位,hh为时间中的小时,占2位,mm为时间中的分钟,占2位,ss为时间中的秒,占2位。与日期型一样,要用将数据括起来若要指定空日期时间值,要在花括号中加 一个空格和冒号,如::,逻辑型(Logical L)用于存储只有两个值的数据。存入的值只有真(.T.)和假(.F.)两种状态,宽度固定,占1个字节。通用型(General G)用于存储OLE(对象链接和嵌入)对象,只能用于数据表中字段的定义。该字段包含了对OLE对象的引用,而OLE对象的具体内容可以是一个电子表格、一个字处理器的文本、图片等,是由其他应用软件建立的。宽度为4字节表中存储的是指向OLE对象的引用,备注型(Memo)备注型用于字符型数据块的存储,只能用于数据表中字段的定义。在数据表中,备注型字段占用10个字节,并用这10个字节来引用备注的实际内容。实际备注内容的多少只受内存可用空间的限制。备注型字段的实际内容变化很大,不能直接将备注内容存在数据表(.DBF)文件中。系统将备注内容存放在一个相对独立的文件中,该文件的扩展名为FPT。由于没有备注型的变量,所以对备注型字段的处理,需转换成字符型变量,然后使用字符型函数进行处理。,3.2 数据存储类型,3.2.1常量常量:在运算过程中值不变的量(即不变的量).包括字符型常量、数值型常量、逻辑型常量、日期型常量和货币型常量五种。五种常量:C、N、D(T)、L、Y 字符型常量是用定界符标识的字符串。所以也叫字符串常量。定界符必须是ASCII码的单引号、双引号和方括号。如果一种定界符已做为字符型常量的组成部分,则应选择另一种定界符来标识字符串。其书写方法如:男、工程师、财金系金融专业。,数值型、浮点型常量可以是实数或整数,通常也叫做常数,可以用定点式表示,也可以用科学计数法表示。逻辑型常量规定用.Y.或.T.表示逻辑真,.N.或.F.表示逻辑假,小写亦可。日期型、时间型常量常用的日期格式 mm/dd/yy,hh:mm:ssa|p严格的日期格式 yyyy-mm-dd,hh:mm:ssa|p,货币型常量小数位数超过4位时,系统将进行四舍五入的处理。当涉及货币时使用,使用货币型数据要在前面加上符号$,如:$100,3.2.2内存变量内存变量是表示暂时存放在内存变量工作区中的有关程序运行或命令执行过程中所需要使用到的数据,包括常量、中间结果和最终结果。变量命名基本准则:首字符不能是数字;以字母(下划线或汉字)开头,由字母、数字、下划线和汉字组成 名字的长度1到128个字符,不可以与系统保留名同名 词义要尽量准确。,内存变量的赋值命令内存变量表达式STORE表达式TO内存变量表说明:该命令计算表达式的值,并把计算结果赋给内存变量名(格式2 能够给多个内存变量赋值)(1)格式1中的称为赋值号,而不是等于号。即有首先计算右部的值,然后送给左边的变量名;而且具有明显的时序性、方向性和不可移项性。如:X=2 X=X+1(2)格式2中的内存变量名表是一组用逗号分隔开的变量,对于不同类型的变量,不能用格式2同时赋值。,3.2.3 数组变量,1.数组的定义一维数组的定义DIMENSIONDECLARE数组名1(M1),数组名2(M2)二维数组的定义DIMENSIONDECLARE数组名1(M1,N1),数组名2(M2,N2)例如:DIMEX(3)有X(1)、X(2)、X(3)DIMEA(3,2)有A(1,1)、A(1,2)、A(2,1)、A(2,2)、A(3,1)、A(3,2),VFP中最多可定义65000个数组,每个数组最多可有65000个元素数组的赋值数组须先定义后赋值例如:DIMEA(2)A(1)123A(2)ABC数组定义后各元素的初值均为:.F.,3.2.4 字段变量,一个数据库由若干相关的数据表组成,一个数据表又由若干个具有相同属性的记录组成,而每个记录又由若干个字段组成,字段变量就是指表中已定义的任意一个字段。字段变量的类型由建表时定义的字段类型一致。区别:内存变量 字段变量 独立存在,关机丢失 隶属于表,存于磁盘 类型与长度可由赋值改变 由表结构决定,不可改变 单值变量 多值变量当内存变量与字段变量同名时,默认为字段变量,内存变量可用前缀M-或 M.区别。,3.2.5 记录,记录是数据表中一组数据项的集合,同一个数据表中可以有若干个记录,每一个记录具有相同的字段数。在VFP中,许多操作都是通过记录操作来完成的。3.2.6 对象对象:构成程序的基本单位和运行实体,3.3 函数,绝对值函数:ABS(N型表达式)函数值为N型如:?ABS(-123.456)值为123.456指数函数:EXP(N型表达式)函数值为N型如:?EXP(1)值为2.72,一、数值类操作函数,取整函数:,INT(N型表达式)函数值为N型如:?INT(-132.93)值为-132,自然对数函数,LOG(N型表达式)函数值为N型如:?LOG(1)值为 0.00?LOG(100)值为 4.61,取最大者函数:,MAX(表达式1,表达式2,表达式3)函数值为最大者,表达式必须同类 型比较,表达式可以是N型、D型、不能为C型?MAX(12,43,20)值为43?MAX(12,-43,20)值为20?MAX(CTOD(01/01/97),CTOD(10/03/97)值为 10/03/97,取最小者函数:,MIN(表达式1,表达式2,表达式3.)函数值为最小者,两个表达式必须同类型如:?MIN(12,-43,20)值为-43?MIN(CTOD(01/01/97),CTOD(10/03/97)值为 01/01/97,取余函数:,MOD(N型表达式1,N型表达式2)或:N1%N2取表达式1除以表达式2的余数函数值的符号一定和表达式2符号相同如:?MOD(21,4)值为1?MOD(-21,4)值为3?MOD(21,-4)值为-3?MOD(-21,-4)值为-1,四舍五入函数:,ROUND(N型表达式1,N型表达式2)函数值为N型,如:?ROUND(123.45678,2)值为123.46?ROUND(123.45678,0)值为 123?ROUND(123.45678,-1)值为 120,开平方函数:,SQRT(N型表达式)如:?SQRT(10000)值为100.00N型表达式不能负数,随机函数RAND()返回随机值,即大于0且小于1的任一正小数。例如:?RAND(),随机函数:,二、字符类函数,判子串在母串中的位置:AT(子串,母串)函数值为N型,如:?AT(AD,WTADCER)值为3若母串中无子串,则函数值为0,求子串函数:,SUBSTR(C型,N1,N2)函数值为C型,实数取整?SUBSTR(ABC.DEF,5.99,2.1)+SUBSTR(123.4567,4)值为DE.4567,取左子串函数:,LEFT(C型表达式,N型表达式)?LEFT(中国人民,4)值为中国函数值为C型,N=0值为空串,取右子串函数:,RIGHT(C型表达式,N型表达式)函数值为C型,?RIGHT(中国人民,4)值为人民N=0值为空串?RIGHT(123,2)+RIGHT(123,-1)+RIGHT(中国人民,4)值为23人民,取消前导空格函数:,LTRIM(C型表达式)函数值为C型?LTRIM(123+LTRIM(中国)值为123中国,取消尾部空格函数:,RTRIM(C型表达式)函数值为C型?RTRIM(123+RTRIM(中国人民)值为123中国人民,取消尾随空格函数,TRIM(C型表达式)函数值为C型?TRIM(012345)+TRIM(中国人民)值为 012345中国人民,取消前部与尾随空格函数,ALLTRIM(C型表达式)函数值为C型?ALLT(012345)+ALLT(中国人民)值为 012345中国人民,字符串测试函数,测字母开关函数:ISALPHA(C型表达式)函数值为 L型若字符串开头是字母,函数值为.T.,否则返回.F.?ISALPHA(1ABC2)值为.f.?ISALPHA(中国人民)值为.f.?ISALPHA(abc)值为.T.?ISALPHA(ABC)值为.T.,测小写字母开头函数,ISLOWER(C型表达式)函数值为L型若字符串开头是小写字母开头,函数值为.T.,否则为.F.?ISLOWER(ABC2)值为.F.?ISLOWER(中国人民)值为.F.?ISLOWER(abc)值为.T.,测大写字母开头函数,ISUPPER(C型表达式)函数值为 L型若字符串是大写字母开头字母,函数值为.T.,否则函数值为.F.?ISUPPER(ABC2)值为.T.?ISUPPER(中国人民)值为.F.?ISUPPER(abc)值为.F.?ISUPPER(ABC)值为.T.,求字符串长度,LEN(C型表达式)函数值为N型函数值为字符串的个数?LEN(ABCDEIE)值为7?LEN(中国人民)值为8,字符串转换函数,宏替换:&C型内存变量&作用是去掉字符串的界限符号。如:C1=姓名?&C1 值为 姓名如:A1=中国?&A1.漳州 值为 中国漳州,注意:C 型内存变量 不允许是C型数组元素。宏代换函数可以嵌套使用。.C2=Good!.C1=2.C=C&C1.?&C 值为Good!.?&C1.2*3 值 为 66,大写字母换成小字母,LOWER(C型表达式)将字符串中的所有大写字母换成小写字母如:?LOWER(abAB635&)值为 abab635&,替换子串函数,STUFF(串1,N1,N2,串2)串1中第N1个字符开始N2个字符用串2替换如:C1=1234567890?STUFF(C1,2,4,AB)值为1AB67890,当N1大于串1的长度,则串2直接连接在串1后面?STUFF(C1,12,5,AB)值为1234567890AB当N2=0,则串2直接插入第N1个字符前?STUFF(C1,1,0,AB)值为AB1234567890,格式转换函数,TRANSFORM(表达式,C型表达式)?Transform(12.34,$.99)$12.23,小写字母转换成大写字母,UPPER(C型表达式)值为C型将字符串中所有的小写字母转换成大写字母如:?UPPER(abCD32)值为 ABCD32,生成重复的字符串,REPLICATE(C型表达式,N)值为C型重复生成字符串N次如:?REPLICATE(*,10)值为*,生成空格字符串,SPACE(N)值为C型生成N个空格的字符串如:?12+SPACE(4)+AB值为 12 AB,三、日期与时间类函数,求星期函数:CDOW(D型表达式)值为C型函数值为日期的星期(英文)如:D1=CTOD(07/01/95)?CDOW(D1)值为Saturday,系统日期,DATE()D型函数值为系统的日期?DATE()值为系统的日期,系统时间,TIME()C型函数值为计算机系统的时间?TIME()值为系统的时间,日期时间函数,DATETIME()T型函数值为计算机系统的日期时间?DATETIME()值为系统的日期时间09/01/03 08:00:24 AM,求星期中的星期几(整数),DOW(D型表达式)值为N型函数值为日期对应的数字日 一 二 三 四 五 六1 2 3 4 5 6 7如:D1=CTOD(07/01/95)?DOW(D1)值为 7,求日期中的月份(英文)函数,CMONTH(D型表达式)C型函数值为日期对应的月份(英文)如:D1=CTOD(07/01/95)?CMONTH(D1)值为 July,求日期中的号数函数,DAY(D型表达式)N型函数值为日期对应的号数如:D1=CTOD(07/01/95)?DAY(D1)值为 1,求日期中的月份函数,MONTH(D型表达式)N型函数值为日期对应的月份(整数)D1=CTOD(07/01/95)?MONTH(D1)值为 7,求日期中的年份函数,YEAR(D型表达式)N型函数值为日期对应的年份(四位整数)如:D1=(07/01/95)?YEAR(D1)值为1995,四、类型转换类函数,字符转换成ASCAII码值函数:ASC(C型表达式)值为字符串中第一个字符的ASCII码值如:?ASC(ABCD)值为65,ASCII码值转换成字符函数,CHR(N型表达式)C型值为数值对应的ASCII码字符?CHR(66)值为B实数先取整后求值如:?CHR(98.45)值为bCHR(7)值为响铃,字符串与数值转换函数,数值转换字符型函数STR(N1,N2,N3)C型如:N1=1234.56789?STR(N1,9,2)值为 1234.57 宽度9(位数不足前面用空格补齐)若省略N3,只转换到整数如:?STR(N1,5)值为 1235 宽度为5若省略N2和N3,则默认N2=10,N3=0,字符型转换成数值函数,VAL(C型表达式)N型 将字符串第1个字符开始到第1个非数值字符之间的字符串转换成对应的数值如:?VAL(12.45A)值为12.45若字符串中的第一个字符为非数值字符,则返回0如:?VAL(A12.45)值为0.00?VAL(253)值为253.00(默认小数点的个数为两个),字符与日期转换函数,字符型转换成日期型函数CTOD(C型表达式)D型?MONTH(CTOD(07/01/95)值为7,日期型转换成字符型函数,DTOC(D型表达式)C型将日期转换成形式为月月/日日/年年字符型数据?DTOC(DATE()值为 01/01/99,日期转换为YYYYMMDD格式字符串,DTOS()C型返回YYYYMMDD字符串例如:?DTOS(10/01/99)返回值为:19991001,五、状态检验类操作函数,FoxPRO在内存中开辟多个工作区,允许在多个工作区上打开多个数据库文件,但只有一个工作区是当前工作区,其中的库文件为当前库文件。,1、数据库参数测试函数,库文件别名测试函数:ALIAS(N型表达式)值为第N型表达式号工作区上 已打开的数据库文件别名。若省略N型表达式,则值为当前库文件别名若指定工作区上无打开库文件,则值为空串,库文件名测试函数DBF(N型表达式)值为N型表达式号工作区上已打开的库文件名省略N型表达式,指当前工作区若指定工作区上无打开库文件,则值为空串,库文件字段数测试函数FCOUNT(N型表达式)值为N型表达式号工作区上已打开的库文件中的字段的数目。省略N型表达式,指当前工作区若指定工作区上无打开库文件,则值为0,库文件字段名测试函数FIELD(N型表达式 1,N型表达式2)值为N型表达式2号工作区上已打开的库文件中第N型表达式1个字段的字段名,函数值为C型。省略N型表达式,指当前工作区若指定工作区上无打开库文件,则值为空串,若N型表达式1的值小于、大于库文件的字段数,值也为0,库文件最近的修改日期测试函数LUPDATE()值为当前库文件最近一次修改的日期,函数值为D型若当前无打开库文件,则值为空日期/,测试索引文件名NDX(N型表达式)值为打开的索引文件名表中第N型表达式个索引文件的名称,N=17值为C型若第N型表达式个索引文件不存在,则值为空串,库文件记录数测试函数RECCOUNT(N型表达式)值为N型表达式号工作区上已打开的库文件中的记录总数,值为N型省略N型表达式,指当前工作区若指定工作区上无打开库文件,则值为0,库文件记录长度测试函数RECSIZE(N型表达式)值为N型表达式号工作区上已打开的库文件中记录的长度(所有字段长度和加1),函数值为N型。省略N型表达式,指当前工作区若指定工作区上无打开库文件,则值为0,2、当前记录状态测试函数,测试库文件头函数:BOF(N型表达式)当第N型表达式号工作区上已打开的数据库文件记录指针在首记录之前,值 为.T.,否则为.F.,值为L型。若省略N型表达式,指当前工作区若指定工作区无打开库文件,则值为.F.,测试当前记录是否逻辑删除函数:DELETED(N型表达式)测试第N型表达式号工作区上已打开的数据库文件中当前记录是否被逻辑删除,是,值 为.T.,否,值为.F.,值为L型。若省略N型表达式,指当前工作区若指定工作区无打开库文件,则值为.F.,测试数据库文件尾函数:EOF(N型表达式)当第N型表达式号工作区上已打开的数据库文件中当前记录已指向末记录之后,(称为文件尾)是,值 为.T.;否,值为.F.,值为L型。若省略N型表达式,指当前工作区若指定工作区无打开库文件,则值为.F.,测试查找结果函数:FOUND(N型表达式)在第N型表达式号工作区上已打开的数据库文件中进行查找,若查到,值 为.T.,否,值为.F.,值为L型。若省略N型表达式,指当前工作区,测试当前记录号函数:RECNO(N型表达式)测试第N型表达式号工作区上已打开的数据库文件中当前记录的记录号,值为N型。若省略N型表达式,指当前工作区若指定工作区无打开库文件,则值为0,若记录指针为BOF()为.T.,则值为1,若EOF()为.T.,值为记录总数 加1,3、显示器测试函数,测试光标所在列数函数 COL()返回值是屏幕上当前光标所在的列数(0132),函数值为N型,测试光标所在行数函数 ROW()返回值是屏幕上当前光标所在的行数(033),函数值为N型,测试显示器色彩函数 ISCOLOR()若启动FOXBASE时是在彩色方式下,则返回值是.T.,否则为.F.,函数值为L型,六、打印机测试函数,测试打印头所在列数函数 PCOL()返回值是打钱机上打印头当前所在的列数,函数值为N型,测试打印头所在行数函数 PROW()返回值是打印机上打印头当前所在的行数,函数值为N型,七、其它测试函数,测试当前可用字节函数DISKSPACE()返回值是当前盘上可用空间的字节数,函数值为N型,空值判断函数,EMPTY()若表达式为空值,则返回真值.T.否则返回.F.表达式可是C,N,D,L型,可以是表的字段名表达式。对不同表达式类型,空值概念不同。C型:空串,空格,换行符等D型、M型、G型:空L型:逻辑假.F.N型:0 值以上几种类型EMPTY()返回真.T.,测试文件是否存在函数FILE(C型表达式)若C型表达式指定的文件名存在,则返回值是.T.,否则返回值是.F.,函数值为L型,读一键函数INKEY(N型表达式)返回值是从键盘输入的一个键的键值,等待用户按键的时间为N型表达式秒,函数值为N型若N型表达式0,则无限期等待,若超过等待时间,用户未按键,则返回为0INKEY()函数返回的某些特殊键的键值如回车 13 空格 32 等,测试当前工作区号函数SELECT()返回值是当前工作区的区号,函数值为N型,TYPE(表达式)返回值是引号内 表达式 的类型,函数值为C型 共有 N、C、D、L、M、T、U等数据类型与返回的字符字符型 C 未定义的表达式类型 U 通用型 G 货币型 Y 日期型 D 日期时间型 T逻辑型 L 备注型 M 对象型 OScreen(用 SAVE SCREEN 命令建立)S数值型(或者整数、单精度浮点数和双精度浮点数)N?type(customer.contact)&显示c?type(12*3)+4)&显示n?type(date()&显示d?type(answer=42)&显示u,测试表达式类型函数,信息对话框函数,MESSAGEBOX(提示文本,对话框类型N1+N2+N3,标题文本)提示文本:指定在对话框中显示的文本。在提示文本中包含回车符(CHR(13)可以使信息移到下一行显示。对话框类型:指定对话框中的按钮N1和图标N2、显示对话框时的默认按钮N3以及对话框的行为。它可以是下面每个表中选一个值组成的三个值的和标题文本:指定对话框标题栏中的文本。若省略标题栏中将显示Microsoft Visual FoxPro,当省略对话框类型时,等同于指定对话框类型值为0。N1数值对话框按钮(从 0 到 5 指定了显示的按钮)0 仅有确定按钮 1 确定和取消按钮 2 放弃、重试和忽略按钮 3 是、否和取消按钮 4 是、否按钮 5 重试和取消按钮N2数值图标(指定了对话框中的图标)0 不显示图标 16 停止图标 32 问号 48 惊叹号 64 信息(i)图标,N3数值 默认按钮(指定对话框中哪个按钮为默认按钮)0 第一个按钮 256 第二个按钮 512 第三个按钮例如,若对话框类型值为 290(2+32+256)则指定的对话框含有如下特征:放弃、重试或忽略按钮。消息框显示问号图标。第二个按钮,重试为默认按钮。,MESSAGEBOX()返回值类型:数值型说明:MESSAGEBOX()的返回值标明选取了对话框中的哪个按钮。在含有取消按钮的对话框中,如果按下 ESC 键退出对话框,则与选取取消按钮一样,返回值(2)。注意本函数的最短缩写为 MESSAGEB()。下表列出了 MESSAGEBOX()对应每个按钮的返回值。返回值按钮 返回值按钮 1 确定 5 忽略 2 取消 6 是 3 放弃 7 否 4 重试,程序例子:F_3P1.prgcmessagetitle=messagebox函数测试例子cmessagetext=记录没有找到 你是否再次搜索?ndialogtype=4+32+256*4=yes and no buttons*32=question mark icon*256=second button is defaultnanswer=messagebox(cmessagetext,ndialogtype,cmessagetitle)do casecase nanswer=6wait window 你选择了 是 yescase nanswer=7wait window 你选择了 否 noendcase,3.4 运算符,可用于运算的数据有四种类型所以有四种类型的运算符一、算术运算符:括号()正负+-取模%乘方*乘除*/加减+-符号优先次序:()、正负号、乘方、乘除、取模、加减,+-符号用于日期型的三种情况:日期型数据+整数(天数)结果是该日期之后的新日期,仍为日期型数据。日期型数据 整数(天数)结果是该日期之前的新日期,仍为日期型数据。日期型数据1 日期型数据 结果是两日期之间的天数,二、字符运算符,完全连接符+字符串1+字符串2(原样连接)将串2连接到串1的后面不完全连接符(去空格)-字符串1 字符串2(紧缩连接)将串2 连接到串1的后面,但串1 的尾部空格移到串2的后面包含运算符(比较)字符串1$字符串2 字符串2是否包含字符串1如:ABCD+EFG 返回 ABCD EFG ABCD-EFG 返回 ABCDEFG 张$张王李 返回.T.,三、关系运算符,、=、=、或#、=、!=用于N,C,D型数据的大小比较数值大小比较 按数值大小比较如:?934397 结果为.T.?2+4=6*3 结果为.F.字符大小比较 用字符的ASCAII 码值大小比较,第一个字符相同时再比较第二个.如:?=+值.T.=ASCII为61+ASCII为43注意:大小字母之间的比较是ASCAII 码值的相反!Microsoft 的 BUG?Aa 值.T.A 65 a 97日期大小 早日期值小?CTOD(01/01/98)CTOD(01/01/97)值为.T.,大于:小于:=5 abc=ab 等于:=4=4 abc=ab(非精确比较)不等于:4 4 bc ab(非精确比较)不等于:#4#5 bc#ab(精确比较)等于=bc=bc(精确比较)以上表达式结果为真.T.,常用汉字(一级汉字)的大小按拼音顺序、不常用的汉字(二级汉字)的大小按偏旁部首顺序比较大小如:中国福建.T.,精确比较与非精确比较 控制 EXACT当SET EXACT OFF时(系统默认)=为字符型数据的非精确比较,即=不同于=#abcd=abc.T.abcdabc.F.abc=abcd.F.abcabcd.T.当SET EXACT ON时=为字符型数据的精确比较,即=相同于=#abcd=abc.F.abcdabc.T.abc=abcd.F.abcabcd.T.,四、逻辑运算符,.NOT.或!、.AND.、.OR.运算优先次序()、.NOT.、.AND.、.OR.非运算:.NOT.!,运 算,结果,.NOT.T.,.NOT.F.,.F.,.T.,运 算,结果,.T.AND.T.,.F.AND.T.,.F.AND.F.,.T.AND.F.,.T.,.F.,.F.,.F.,与运算:.AND.,运 算,结果,.T.OR.T.,.F.OR.T.,.F.OR.F.,.T.OR.F.,.T.,.T.,.F.,.T.,或运算:.OR.,3.5 表达式,表达式是由运算对象(常量、变量、函 数)和各种运算符组成的式子(1)数值表达式(结果为数值)数值型数据 算术运算符 数值型数据日期型数据 日期型数据,(2)字符型表达式(结果为字符)字符型数据+字符型数据字符型数据 字符型数据(3)日期型表达式(结果为日期)日期型数据+整数数据日期型数据 整数数据,(4)逻辑表达式(结果为逻辑值)数值型数据 关系运算符 数值型数据日期型数据 关系运算符 日期型数据字符型数据 关系运算符 字符型数据逻辑型数据 逻辑运算符 逻辑型数据,表达式中各运算符运算次序,()算术运算符 字符运算符 字符串运算符 关系运算符 逻辑运算符,