字符与日期时间表达式,关系表达式,逻辑表达式常用函数.ppt

上传人:创****公 文档编号:4163581 上传时间:2021-03-26 格式:PPT 页数:142 大小:684.50KB
返回 下载 相关 举报
字符与日期时间表达式,关系表达式,逻辑表达式常用函数.ppt_第1页
第1页 / 共142页
字符与日期时间表达式,关系表达式,逻辑表达式常用函数.ppt_第2页
第2页 / 共142页
点击查看更多>>
资源描述

《字符与日期时间表达式,关系表达式,逻辑表达式常用函数.ppt》由会员分享,可在线阅读,更多相关《字符与日期时间表达式,关系表达式,逻辑表达式常用函数.ppt(142页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、本章要点: Visual FoxPro的各种类型常量的书写格式变量的种类和类型,内存变量常用命令 数值、字符与日期时间表达式,关系表达式,逻辑表达式 常用函数:字符处理函数、数值计算函数、日期时间函数、数据类型转换函数和测试函数 命令文件的建立与运行:程序文件的建立、简单的交互式输入输出命令、应用程序的调试与执行 结构化程序的调试与执行:顺序结构程序设计、选择结构程序设计、循环结构程序设计 过程与过程调用:子程序设计与调用、过程与过程文件、局部变量和全局变量、过程调用中的参数传递,第2章 VF程序设计基础,第2章 VF程序设计基础,教学目标 了解:程序的概念,应用程序的调试与执行 理解:变量的

2、种类和类型,表达式的组成和分类及各种表达式的表示方法简单的交互式输入输出命令,结构化程序的三种基本结构,过程及变量的作用域的概念,参数的定义 掌握:VF的各种类型常量的书写格式,内存变量常用命令,表达式和常用函数的使用程序文件的建立与执行,三种基本结构语句的编程,过程、过程文件的建立、过程的调用及调用中参数的使用,教学重点内存变量常用命令,字符处理函数、数据类型转换函数程序文件的建立、选择结构程序设计、循环结构程序设计,子程序设计与调用、过程与过程文件、过程调用中的参数传递 教学难点逻辑表达式、关系表达式,数据类型转换函数、测试函数循环结构程序设计,过程与过程文件、局部变量和全局变量、过程调用

3、中的参数传递,第2章 VF程序设计基础,将各种形式的数据经过数字化存入计算机,都须确定其: 型:类型 数据 值:取值 在VFP中,常量、变量、函数和表达式的类型包括6种:字符型、 数值型、货币型、逻辑型、日期型、日期时间型。,第2章 VF程序设计基础,2.1 常量和变量,2.1.1 常量 定义:在程序运行过程中保持不变的量 。不同类型的常量有不同 的书写格式。,1、字符型(Character),表示方法是用半角单引号、双引号或方括号扩起来的内容。 ( ,“ ”和称为定界符),注:定界符只规定常量的类型以及常量的起始和终止界限,它不作为常量本身的内容。且必须要成对匹配,不能一边用单引号而另一边用

4、双引号。若某种定界符本身也是字符串的内容,则需要用另一种定界符为该字符串定界。,例2.1:显示几个字符型常量 在命令窗口键入以下两条命令: ?“计算机”,123,数据,ABX”abc” ? “学习”, 字符串, “”,表示方法 ?(单问号)的功能:是在下一行显示若干个表达式的值。 ?(双问号)的功能:是在同一行显示表达式的值。,2、数值型常量(Numeric),组成:由09、小数点和正负号。如:12、2.45、-6.78。 为了表示很大或很小的数值型常量,可以使用科学记数法形式。 数值型数据的长度为120,内存中用8个字节表示,其取值范围是-0.9999999999E+190.999999 9

5、999E+20,3、货币型(Currency),用来表示货币值,其格式与数值型常量类似,但要加上一个前置的($)符。 货币数据采用4位小数。若一个货币型常量多于4位小数,那么系统会自动将多余的小数位四舍五入。例:$122.456 789-$122.4568 在内存中占用8个字节,取值范围:-922 337 203 685 477.580 7922 337 203 685 477.580 7,4、日期型(Date),日期型常量的定界符是一对花括号。花括号内包括年、月、日三部分内容,各部分内容之间用分隔符分隔。系统默认斜杠(/)分隔符。常用的其他日期分隔符有连字号(-)、句点(.)和空格。 日期型

6、常量有两种格式:,传统的日期格式:,(系统默认的日期数据为美国日期格式“月/日/年”(mm/dd/yy),其中月、日、年各为两位数字。) 如:10/08/01 对这个日期在不同的设置状态下,计算机会作出不同的解释。2001年10月8(月/日/年)日、2001年8月10日(日/月/年)、2010年8月1日(年/月/日) 注:上面的格式要受到命令语句SET DATE TO 和SET CENTURY设置的影响。,严格的日期格式,yyyy-mm-dd,用此格式写的日期常量能表达一个确切的日期,它不受SET DATE等语句设置的影响。 注:1)花括号内第一个字符必须是() 2)年份必须用4位 3)年月日

7、的次序不能颠倒、不能缺省。2003-12-03 日期型数据用8个字节表示,取值范围是:0001-01-019999-12-31,、的区别:,严格的日期格式可以在任何情况下使用,而传统的日期格式只能在SET STRICTDATE TO 0状态下使用。所以使用严格的日期格式十分方便。,影响日期格式的设置命令,A)SET MARK TO日期分隔符 ” 01,5.日期时间型(Date Time),包括日期和时间两部分内容:, 其中与日期型常量相似,也有传统和严格两种格式. 部分的格式为 hh:mm:ssap,其中hh、mm、ss分别代表时、分和秒,默认值分别为12、0和0。a和p分别代表上午和下午,默

8、认值为a。如果指定的时间大于等于12,则自然为下午的时间。,例2.3显示日期时间型常量 SET MARK TO ?2001-03-22,11:30p,1999-01-01, ,2000-10-1,3 显示:03/22/01 11:30:00 PM 01/01/99 12:00:00 AM 10/01/00 03:00:00 AM 注:日期时间型数据用8个字节存储,日期部分的取值范围与日期型数据相同,时间部分的取值范围是:00:00:00AM11:59:59PM,6.逻辑型(Logical),只有两个值:真和假。真的表示形式:.T. .t. .Y. .y.,假的表示形式:.F. .f. .N.

9、.n. 注:前后的定界符必不可少。否则会被误认为变量名,逻辑型数据只占用一个字节。,1.浮点型(Float),包括此类型是为了提供兼容性,浮点型在功能上与数值型等价只能用在表中的字段,2.双精度型(Double),此类型用于取代数值型,以便提供更高的数值精度与数值型不同,双精度只能用于数据表中字段的定义每个双精度型数据占8个字节,3.整型(Integer),整型用于存储无小数部分的数值,只能用于数据表中字段的定义在表中,整型字段占用个字节,4备注型(Memo),备注型用于字符型数据块的存储,只能用于数据表中字段的定义在表中,备注型字段占用4个字节,并用这4个字节来引用备注的实际内容实际备注内容

10、的多少只受内存可用空间的限制 由于备注型字段的实际内容变化很大,不能直接将备注内容存在表.dbf文件中系统将备注内容存放在一个相对独立的文件中,该文件的扩展名为.dbt由于没有备注型的变量,所以对备注型字段的处理,需转换成字符型变量,然后使用字符型函数进行处理,5通用型(General),字符型(二进制): 备注型(二进制):,2.1.2 变量,变量是在程序运行过程中其值可以发生改变的量。VF分为字段变量和内存变量。 注:VF变量命名规则是: 1)以字母、数字、下划线组成,中文版VF可以使用汉字做变量名 2)以字母或下划线开始,中文VF可以汉字开始 3)长度为1128个字符 4)不能使用VF的

11、保留字,由于表中的各条记录对同一个字段名可能取值不同,因此,表中的字段名就是变量,称为字段变量。 内存变量是内存中一个存储区域,变量值就是存放在这个存储区域里的数据,变量的类型取决于变量值的类型。例:当把一个常量赋给一个变量时,这个常量就被存放到该变量对应的存储位置中而成为该变量新的取值。在Visual FoxPro中,变量的类型可以改变,也就是说,可以把不同类型的数据赋给同一个变量。,内存变量的数据类型包括字符型(C)、数值型(N)、货币型(Y)、逻辑型(L)、日期型(D)和日期时间型(T)。,1.简单内存变量,每一个变量都有一个名字,可以通过变量名访问变量。如果当前表中存在一个同名的字段变

12、量,则在访问内存变量时,必须在内存变量名前加上前缀.(或) 变量的赋值命令有两种格式: = 赋值号 STORE TO ,功能注释:,等号一次只能给一个内存变量赋值。STORE命令可以同时给若干个变量赋予相同的值,各内存变量名之间必须用逗号分开。 在VF中,一个变量在使用之前不需要特别的声明或定义。当用命令给变量赋值时,如果该变量并不存在,那么系统会自动建立它。 可以通过对内存变量重新赋值来改变其内容和类型。,例: 内存变量和字段变量的访问,这里用到一个表文件“学生.DBF”,其结构如下:学生(学号C(8),姓名C(6),性别C(2),出生日期D(8)) 在命令窗口键入命令: USE 学生&US

13、E是打开表的命令 LIST &LIST是显示表 中各条记录的命令 ?姓名,性别,学号 &显示内存变量,显示: STORE “赵小辉” TO 姓名 &用字符串向内存变量姓名赋值 =500 &用数值型常量500赋值内存变量 XM=姓名&用字段变量赋值内存变量 STORE 8.88 TO X1,X2&对两个内存变量X1、X2赋予相同值 STORE .T. TO Q&用逻辑常量赋值内存变量 ?姓名,m.姓名,x1,x2,y,xm 显示:刘明赵小辉8.88 8.88 500刘明,2.数组,数组是内存中连续的一片存储区域,它由一系列元素组成,每个数组元素可通过数组名及相应的下标来访问。每个数组元素相当于一

14、个简单变量,可以给各元素分别赋值。在VF中,一个数组中各元素的数据类型可以不同。 Dimension a(2,3) a(1,1) a(1,2) a(1,3) a(2,1) a(2,2) a(2,3) 与简单内存变量不同的是,数组在使用之前一般要用DIMENSION或DECLARE命令来创建,规定数组的维数,数组名和数组大小。数组大小由下标值的上下限来决定,下限规定为。,创建数组的命令格式为:,DIMENSION(,), DECLARE(,), 以上两种格式的功能完全相同。数组创建后,系统自动给每个数组元素赋以逻辑假.F. 整个数组的数据类型为(Array),而各个数组元素可以分别存放同类型的数

15、据。 使用时应注意: dimension a(5),y(2,3) y(1,1) y(1,2) y(1,3)y(2,1)y(2,2) y(2,3),在一切使用简单内存变量的地方,均可以使用数组元素。 在赋值和输入语句中使用数组名时,表示将同一个值同时赋给该数组的全部数组元素。 在同一个运行环境下,数组名不能与简单变量名重复。 在赋值语句中的表达式位置不能出现数组名。x=a 可以用一维数组的形式访问二维数组。如:数组y中的各元素用一维数组形式可依次表示为:y(1),y(2),y(3),y(4),y(5),y(6),其中y(4)与y(2,1)是同一变量。,2.1.3 内存变量常用命令,1. 内存变量

16、的赋值 格式1 STORE TO 格式2 =,2. 表达式值的显示,格式1: ? 区别 格式2: ?,3. 内存变量的显示,格式:LIST MEMORYLIKETO PRINTER|TO FILE 格式:DISPLAY MEMORYLIKETO PRINTER|TO FILE,功能:,显示内存变量的当前信息,包括变量名,作用域,类型,取值。 LIKE只显示与通配符相匹配的内存变量。通配符包括*和?。 TO PRINTER或TO FILE用于显示的同时送往打印机,或者存入给定文件名的文本文件中。文件的扩展名为.txt,区别:,LIST MEMORY一次显示与通配符匹配的所有内存变量,如果内存变量

17、多,一屏显示不下,则自动向上滚动。DISP MEMORY分屏显示与通配符匹配的所有内存变量,如果内存变量多,显示一屏后暂停,按任意键之后再继续显示下一屏。,4. 内存变量的清除,格式:CLEAR MEMORY 格式:RELEASE 格式:RELEASE ALLEXTENDED 格式:RELEASE ALLLIKE|EXCEPT,功能:,格式清除所有内存变量。 格式清除指定的内存变量。 格式清除所有内存变量。一般情况下作用与格式相同。如果出现在程序中则应该加上短语EXTENDED,否则不能删除公共内存变量。 格式选用LIKE短语清除与通配符相匹配的内存变量,选用EXCEPT短语清除与通配符不相匹

18、配的内存变量。,例:RELEASE ALL LIKE A* RELEASE ALL EXCEPT A?,例2.4 CLEAR MEMORY DIMENSION y(2,2) STORE xxx TO x1,y(1,1) y(3)=2001-03-23 x2=$122.23 LIST MEMO LIKE y*,显示如下: YPubA (注意显示结果) (1,1)C“xxx” (1,2)L.F. (2,1)D03/23/01 (2,2)L.F.,RELEASE ALL LIKE y* X=2001-08-22,11:30P LIST MEMO LIKE X*,显示如下: XPubT08/22/01

19、 11:30:00PM X1PubC“xxx” X2PubY122.2300,.表中数据与数组数据之间的交换,表文件的数据内容是以记录的方式存储和使用的,而数组是把一批数据组织在一起的数据处理方法,为了使它们之间方便地进行数据交换,以利于程序的使用,Visual FoxPro提供了相互之间数据传递的功能,可以方便地完成表记录与内存变量之间的数据交换。,将表的当前记录复制到数组,格式:SCATTERFIELDSMEMO TO BLANK 格式: SCATTERFIELDS LIKE|FIELDS EXCEPTMEMO TO BLANK,格式的功能:,)是将表的当前记录从指定字段表中的第一个字段内

20、容开始,依次复制到数组名中的从第一个数组元素开始的内存变量中。若不使用FIELDS短语指定字段,则复制除备注型M和通用型G之外的全部字段。 )若事先没有创建数组,系统将自动创建;若已创建的数组元素个数少于字段数,系统自动建立其余数组元素;若已创建的数组元素个数多于字段数,其余数组元素的值保持不变。 )若选用MEMO短语,则同时复制备注型字段。若选项用BLANK短语,则产生一个空数组,各数组元素的类型和大小与表中当前记录的对应字段相同。,格式的功能,是用通配符指定包括或排除的字段。FIELDS LIKE和FIELDS EXCEPT可以同时使用。,将数组数据复制到表的当前记录,格式:GATHER

21、FROM FIELDSMEMO 格式:GATHER FROM FIELDS LIKE|FIELDSEXCEPTMEMO,格式的功能:,将数组中的数据作为一个记录复制到表的当前记录中。从第一个数组元素开始,依次向字段名表指定的字段填写数据。若缺省FIELDS选项,则依次向各个字段复制,若数组元素个数多于记录中字段的个数,则多余部分被忽略。若选用MEMO短语,则依次向备注型字段复制数据。,2.2表达式,表达式是由常量、变量和函数通过特定的运算符连接直接起来的式子。 表达式可分为数值表达式、字符表达式、日期时间表达式和逻辑表达式,2.2.1 数值、字符与日期时间表达式,.数值表达式 数值表达式由算术

22、运算符将数值型数据连接起来形成,其运算结果仍然是数值型数据。数值型数据可以是数值型常量或者变量。 算术运算优先级,表2.2算术运算符及其优先级,例2.5 计算数学算式和的值。 ?(1/60-3/56)*18.4500结果为:-0.6809 ?(1+2(1+2)/(2+2) 结果为:2.25,求余运算,求余运算%和取余函数MOD()的作用相同。 注:余数的正负号与除数一致,当被除数与除数异号时,结果为余数除数。,例2.6 求余运算: % ?15%4,15%-4 15%-4商3余3结果为余数除数 结果为:31 STORE 122 TO X,Y15%-7 2 1 Z=73 ?X%Z,MOD(X,Z)

23、,X%(Y-200) 结果为:494934,2.字符表达式,字符表达式由字符串运算符将字符型数据连接起来形成,其运算结果仍然是字符型数据。 运算符: :前后两个字符串首尾连接形成一个新的字符串 :连接前后两个字符串,并将前字符串的尾部空格移 到合并后的新字符串尾部。,例2.7 字符串运算 a= “Hello_ _ ” b=”everyone!” ?a+b,a-b 显示为: Hello_ _everyone! Helloeveryone!_ _ use 职工&打开职工表 ? 姓名“的职称是”职称 显示为:李小明的职称是助教,2.日期时间表达式,运算符:和 注:日期时间表达式的格式有一定限制,不能

24、任意组合.如: 不能用运算符将两个连接起来。合法的日期 时间表达式格式如表2.3所示,其中和都是数值表达式。,表2.3日期时间表达式的格式,例2.8 日期时间运算 ?2001-03-19+10,2001-03-19-2000-03-19 显示:03/29/01 365 ?2001-03-19 11:10:10 am-2001-03-19 10:10:10 am 显示:3600 ?2001-03-19 10:10:10 am+10 显示:03/19/01 10:10:20 am,2.2.2 关系表达式,1.关系表达式 由关系运算符将两个运算对象连接起来形成。 即,表2.4 关系运算符,注:前后两

25、个运算对象的数据类型要一致。但日期和日期时间型数据可以比较,数值型和货币型数据比较 按数值的大小比较,包括负号。如0-1 $150$105.(返回值的类型?) 日期或日期时间型数据比较 越早的日期或时间越小,越晚的日期或时间越大。 如:2002-01-102001-12-28,逻辑型数据比较 .T.F. .t. ? .f. 子串包含测试$ 格式:$若前者是后者的一个子字符串,结果为逻辑真(.T.),否则为逻辑假(.F.)。,例2.9 关系运算符示例 store “计算机” to s1 store “微型计算机” to s2 ?s1$s2,s2$s1,(s1$s2)(s2$s1),2.设置字符的

26、排序次序,当比较两个字符串时,系统对两个字符串的字符自左向右逐个进行比较,一旦发现两个对应的字符不同,就根据这两个字符的排序序列决定两个字符串的大小。对字符序列的排序设置有人机对话和命令两种方式。 在人机对话方式(菜单)下设置 工具选项数据(选项卡)排序序列 命令方式设置,命令:,SET COLLATE TO “” 排序次序名有三种:“Machine”(机器)、 “PinYin”(拼音)、 “Stroke”(笔画),“Machine”(机器):,按照机内码顺序排序,在微机中,西文字符是按照ASCII码值排列的,空格在最前面,大写字母ABCD序列在小写字母abcd序列的前面。因此,大写字母小写字

27、母。对常用的汉字而言,根据它们的拼音顺序决定大小。,“PinYin”(拼音):,按照机内码顺序排序,对西文字符而言,空格在最前面,小写字母abcd序列在大写字母ABCD序列的前面。因此,空格小写字母大写字母,“Stroke”(笔画):,无论中文、西文,均按照书写笔画的多少排序。,例:在不同的字符排序设置下比较字符串大小。 SET COLLATE TO “machine” ? “a”你好” .f. .t. .f. .t.,SET COLLATE TO “pinyin” ? “a”你好” .f. .t.f. .t.,SET COLLATE TO “stroke” ? “a”你好” .t.f.f.

28、.t.,2.字符串精确比较与EXACT设置,在用运算符“=”比较两个字符串时,只有当两个字符串完全相同(包括空格以及各字符的位置)时,运算结果才会是逻辑真.T.,否则为逻辑假.F.,在用“=”比较两个字符串时,运算结果与set exact on|off设置有关,该命令是设置精确匹配与否的开关.,系统默认off状态.当处于off状态时,只要右边的字符串与左边字符串的前面部分内容相匹配,即可得到逻辑真.T.的结果.也就是说,字符串的比较以右面的字符串为目标,右字符串结束即终止比较. 当处于on状态时,比较到两个字符串全部结束,先在较短字符串的尾部加上若干个空格,使两个字符串的长度相等,然后再进行比

29、较.set exact设置详见下表示例。,例2.10 字符串精确比较与exact设置示例。 SET EXACT OFF STORE “计算机” TO S1 STORE “计算机_ _” TO S2 STORE “计算机世界” TO S3 ?S1=S3,S3=S1,S1=S2,S2=S1,S2=S1 .f.t. .f. .t. .f. SET EXACT ON ?S1=S3,S3=S1,S1=S2,S2=S1,S2=S1 .f. .f. .t. .t. .f.,2.2.3 逻辑表达式,由逻辑运算符将逻辑型数据连接起来而形成,其运算结果仍然是逻辑型数据。 逻辑运算符 : NOT或!(逻辑非)、AN

30、D(逻辑与)、OR(逻辑或) 逻辑运算符的优先顺序:NOT AND OR 逻辑运算规则:,表2.5 逻辑运算规则,运算符的优先级:,算术运算符、字符串运算符和日期时间运算符关系运算符逻辑运算符 高 低,例2.11 不同运算符组成的表达式示例。 ?122 and 人 人民 or .t.6 and ABabc .F. ?(10%3=1)AND(15%2=0) OR 电脑 !=计算机 .T.,2.3 常用函数,用程序来实现的一种数据运算或转换。每一个函数都有特定的数据运算或转换功能,它往往需要若干个变量,即运算对象,但只能有一个运算结果,称为函数值或返回值,函数可以用函数名加一对圆括号加以调用,自变

31、量放在圆括号里,如LEN(x) 分类:数值函数、字符处理函数、日期类函数、数据类型转换函数、测试函数5类。,2.3.1 数值函数,1.绝对值和符号函数 ABS() 返回指定数值表达式的绝对值。 例:?abs(-5) 结果为:5 SIGN(),返回指定数值表达式的符号。 例: ?sign(-5) 结果为:-1 数值表达式 正 函数返回值 1 ?sign(5) 结果为:1 负 函数返回值 -1 ?sign(0) 结果为:0,2.求平方根函数,SQRT() 返回指定表达式的平方根。但自变量表达式的值不能为负。 例:?sqrt(-5)(错误),3.圆周率函数,PI():返回圆周率(数值型)。该函数没有

32、自变量。,4.求整数函数,INT() 返回指定数值表达式的整数部分。 CEILING() 返回大于或等于指定数值表达式的最小整数。 FLOOR() 返回小于或等于指定数值表达式的最大整数。,例:STORE5.8 TO X ?INT(X),INT(-X),CEILING(X),CEILING(- X),FLOOR(X),FLOOR(-X) 5 -56-5 5 -6,5.四舍五入函数,ROUND(,) 返回指定表达式在指定位置四舍五入的结果。指明四舍五入的位置。若大于等于0,表示要保留的小数的位数;若小于0,表示的整数部分的舍入位数。,例2.15 x=345.345 ?ROUND(x,2),ROU

33、ND(X,1),ROUND(X,0),ROUND(X,-1) 345.35 345.3 345 350,6.求余数函数,MOD(,) 返回两个数值相除后的余数。是被除数,是除数。注:余数的正负号与除数相同。如果被除数与除数同号,那么函数值即为两数相除的余数。如果被除数与除数异号,则函数值为两数相除的余数再加上除数的值。例:15%-43-4=-1 MOD(15,4) 例2.16 ?MOD(10,3),MOD(10,-3),MOD(-10,3),MOD(-10,-3) 1 -22-1,7.求最大值和最小值函数,MAX(,) ) 计算各自变量表达式的值,并返回其中的最大值。 MIN(,) ) 注:所

34、有表达式的类型必须相同 例2.17 ?MAX(2,12,05),MIN(汽车,飞机,轮船),2.3.2 字符处理函数,1.求字符串长度函数 LEN() 返回指定字符表达式值的长度,即所包含字符个数。函数值为数值型。 例:x=”Hello!” ?LEN(x),2.大小写转换函数 LOWER() 将指定表达式值中的大写字母转换成小写字母,其他字符不变。 UPPER() 将指定表达式值中的小写字母转换成大写字母,其他字符不变。 例:?LOWER(X1y2A*),UPPER(n=1) x1y2a*N=1,3.空格字符串生成函数 SPACE() 返回由指定数目的空格组的字符串。,4.删除前后空格函数 T

35、RIM() 返回指定字符表达式值去掉尾部空格后形成的字符串。 LTRIM() 返回指定字符表达式值去掉前导空格后形成的字符串。 ALLTRIM() 返回指定字符表达式值去掉前导和尾部空格后形成的字符串。,5.取子串函数 LEFT(,) 从指定表达式值的左端取一个指定长度的子串作为函数值。 RIGHT(,) 从指定表达式值的右端取一个指定长度的子串作为函数值。 SUBSTR(,) 从指定表达式值的指定起始位置取一个指定长度的子串作为函数值。,注:在SUBSTR()函数中,若缺省第三个自变量,则函数从指定位置一直取到最后一个字符。,例2.21 STORE “GOOD BYE!” TO X ?LEF

36、T(X,2),SUBSTR(X,6,2)+SUBSTR(X,6), RIGHT(X,3) GO BYBYE!YE!,6.计算子串出现次数函数 OCCURS(,) 返回第一个字符串在第二个字符串中出现的次数,函数值为数值型。若第一个字符串不是第二个字符串的子串,函数值为0。,7.求子串位置函数 AT(,) ATC(,) 功能:函数值为数值型。如果是的子串,则返回字符表达式1值的首字符在值中的位置;若不是子串,则返回0。 ATC与AT功能类似,但在子串比较时字母不区分大小写。,例2.23 STORE “This is Visual FoxPro” TO x ?AT(“fox”,x),ATC(“fo

37、x”,x),AT(“is”,X,3),AT(“xo”,x) 0 16 10 0,8.子串替换函数 STUFF(,) 功能:用值替换中由 和指明的一个子串。替换和被替换的字符个数不一定相等。如果值是0,则插在由指定的字符前面。如果值是空串,那么中由和指明的子串被删去。,例2.24 store good bye! to s1 store morning to s2 ?stuff(s1,6,3,s2),stuff(s1,1,4,s2),stuff(s1,6,0,s2) good morning! morning bye! good morningbye!,9.字符替换函数 CHRTRAN(,) 功能

38、:该函数的自变量是三个字符表达式。当第一个字符串中的一个或多个字符与第二个字符串中的某个字符相匹配时,就用第三个字符串中的对应字符(相同位置)替换这些字符。如果第三个字符串包含的字符个数少于第二个字符串包含的字符个数,因而没有对应字符,那么第一个字符串中相匹配的各字符将被删除。如果第三个字符串包含的字符个数多于第二个字符串包含的字符个数,多余字符被忽略。,例: x1=CHRTRAN(“ABACAD”,”ACD”,”X12”) XBX1X2 y1=CHRTRAN(“计算机ABC”,”计算机”,”电脑”) z1=CHRTRAN(“大家好!”,”大家”,”您”) ?x1,y1,z1 XBX1X2 电

39、脑ABC您好! q1=CHRTRAN(“XYZXAD”,”XAZ”,”Q”) ?q1 QYQD,10.字符串匹配函数 LIKE(,) 功能:比较两个字符串对应位置上的字符,若所有对应字 符都相匹配,返回逻辑真(.T.),否则返回逻辑假 (.F.)。中可以包含通配符*和?。,例2.26 STORE “abc” TO x STORE “abcd” TO y LIKE(“ab*”,x),LIKE(“ab*”,y),LIKE(x,y),LIKE(“?b?”,x),LIKE(“Abc”,x) .T. .T.F.T.F.,2.3.3 日期和时间函数,1.系统日期和时间函数 DATE() 返回当前系统日期,

40、函数值为日期型。 TIME() 以24小时制、hh:mm:ss格式返回当前系统时间,函数值为字符型。 DATETIME() 返回当前系统日期时间,函数值为日期时间型。 例2.27 ?DATE(),TIME(),DATETIME(),2.求年份、月份和天数函数 YEAR(|) 从指定的日期表达式或日期时间表达式中返回年份。 MONTH(|) 从指定的日期表达式或日期时间表达式中返回月份。 DAY(|) 从指定的日期表达式或日期时间表达式中返回月里面的天数。 例2.28 STORE 2001-08-05 TO d ?YEAR(d),MONTH(d),DAY(d),3.时、分和秒函数 HOUR ()

41、 从指定的日期表达式中返回小时部分(24小时制)。 MINUTE() 从指定的日期表达式中返回分钟部分。 SEC() 从指定的日期表达式中返回秒数部分。 例2.29 STORE 2001-03-18 02:30:50 P TO T ? HOUR(T),MINUTE(T),SEC(T) 14 30 50,2.3.4 数据类型转换函数,1.数值转换成字符串 STR(,) 功能:将的值转换成字符串,转换时根据需要自动进行四舍五入。返回字符串的理想长度L应该是值的整数部分位数加上值,再加上1位小数点。如果值大于等于值的整数部分位数(包括负号)但又小于L,则优先满足整数部分而自动调整小数位数;如果值小于

42、值的整数部分位数,则返回一串星号(*)。 的默认值为0,的默认值为10。,例2.30 STORE -122.456 TO N ? “N=”+STR(N,8,3) N=-122.456 ? STR(N,9,2),STR(N,6,2),STR(N,3), ? STR(N,6),STR(N),2.字符串转换成数值 VAL() 功能:将由数字符号(包括正负号、小数点)组成的字符型数据转换成相应的数值型数据。若字符串内出现非数字字符,那么只转换前面部分;若字符串的首字符不是数字符号,则返回数值零,但忽略前导空格。,例2.31 STORE“-123.” TO X STORE 45 TO Y STORE “

43、A45” TO Z ?VAL(X+Y),VAL(X+Z),VAL(Z+Y) -123.45-123.00 0.00 val(A4545)=?,3.字符串转换成日期或日期时间 CTOD() 将值转换成日期型数据。 CTOT() 将值转换成日期时间型数据。,例2.32 SETDATETOYMD SETCENTURYON SETCENTURYTO 19 ROLLVER 51 D1=CTOD(2001/03/18) T1=CTOT(2001/03/18+ +TIME() ?D1,T1,CTOD(50/01/01),CTOD(51/01/01) 2001/03/182001/03/18 10:31:54

44、 PM2050/01/011951/01/01,注:这里SET CENTURY TO语句指定:小于等于50的两位数年份属于21世纪(191),而大于50的两位年份属于20世纪(19)。,4.日期或日期时间转换成字符串 DTOC(,1) 将日期型数据或日期时间数据的日期部分转换成字符串。 TTOC(,1) 将日期时间数据转换成字符串。 注:字符串中日期部分的格式与SET DATE TO语句的设置和SET CENTURY ON|OFF语句的设置有关。时间部分的格式受SET HOURS TO 12|24语句的设置影响。 对DTOC()来说,如果使用选项1,则字符串的格式总是为YYYYMMDD,共8个

45、字符。对TTOC()来说,如果使用选项1,则字符串的格式总是为YYYYMMDDHHMMSS,采用24小时制,共14个字符。,例2.33 STORE DATETIME() TO T ?T ?DTOC(T),DTOC(T,1),TTOC(T),TTOC(T,1),5.宏替换函数 &. 功能:替换出字符型变量的内容,即的值是变量中的字符串。如果该函数与其后的字符无明确分界,则要用“.”作函数结束标识。宏替换可以嵌套使用。,例2.34 STORE “职工” TO DB USE &DB XM= “姓名” ?&XM-“你好!” 李小明你好! SKIP ?XM,&XM 姓名李新,2.3.5 测试函数:,1.

46、值域测试函数 BETWEEN(,) 功能:判断一个表达式的值是否介于另外两个表达式的值之间。当值大于等于且小于等于时,函数值为逻辑真(.T.),否则函数值为逻辑假(.F.)。如果或有一个是NULL值,那么函数值也是NULL值。注:三个自变量的数据类型要一致。,例2.35 STORE .NULL. TO X STORE 100 TO Y ?BETWEEN(150,Y,Y+100),BETWEEN(90,X,Y) .T.NULL.,2.空值(NULL值)测试函数 ISNULL() 功能:判断一个表达式的运算结果是否为NULL值,若是NULL值返回逻辑真(.T.),否则返回逻辑假(.F.)。,例2.

47、36 STORE NULL TO X ?X,ISNULL(X) NULL.T.,3.空值测试函数 EMPTY() 功能:根据指定表达式的运算结果是否为“空”值,返回逻辑真(.T.)或逻辑假(.F.)。 注:这里所指的“空”值与NULL值是两个不同的概念。函数EMPTY(.NULL.)的返回值为逻辑假(.F.)。其次,该函数自变量表达式的类型除了可以是数值型之外,还可以是字符型、逻辑型、日期型等类型。不同类型数据的“空”值,有不同的规定,如下表所示:,表2.6 不同类型数据的“空”值规定,4.数据类型测试函数 VARTYPE() 功能:测试的类型,返回一个大写字母, 函数值为字符型。字母的含义如

48、下表所示:,表2.7 用VARTYPE()测得的数据类型,若是一个数组,则根据第一个数组元素的类型返回字符串。若的运算结果是NULL值,则根据值决定是否返回的类型:如果值为.T.,就返回的原数据类型。如果值为.F.或缺省,则返回X以表明的运算结果是NULL值。,例2.37 X=123 STORE 10 TO Y STORE .NULL. TO X STORE $100.2 TO Z ?VARTYPE(X),VARTYPE(X,.T.),VARTYPE(Y),VARTYPE(Z) XCNY,5.表文件尾测试函数 EOF(|) 功能:测试指定表文件中的记录指针是否指向文件尾,若是返回逻辑 真.T.

49、,否则返回逻辑假.F.。表文件尾是指最后一条记录的后面位置。若缺省自变量,则测试当前表文件。 Top 记录1记录2记录I Bottom 若在指定工作区上没有打开表文件,函数返回逻辑假.F.。或表文件中不包含任何记录,函数返回逻辑真.T.。,文件起始标识 例2.38 USE AA GO BOTTOM ?EOF() .F. SKIP ?EOF(),EOF(2) 文件结束标识 .T. .F.,6.表文件首测试函数 BOF(|) 功能:测试当前表文件(若缺省自变量)或指定表文件中的记录指针是否指向文件首,若是返回逻辑真.T.,否则返回逻辑假.F.。表文件首是指第一条记录的前面位置。 若指定工作区上没有打开表文件,函数返回逻辑假.F.。若表文件中不包含任何记录,函数返回逻辑真.T.。,7.记录号测试函数 RECNO(|) 功能:返回当前表文件(或缺省自变量)或指定表文件中当前记录

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com