530 likes | 668 Views
任务二 用 visualfoxpro 数据形式进行数据处理. 内容提要: 数据类型 数据存储 表达式 常用函数 学习目的与要求: 了解内存变量的显示和清除、日期格式的设置 熟悉常量、变量、表达式、函数的概念 掌握常量、变量、表达式、函数的各种规则及使用 重点: 掌握常量、变量、表达式、函数的规则 难点: 常量、变量、表达式、函数的使用. 任务二 用 visualfoxpro 数据形式进行数据处理. 认识数据类型和常量. 第一讲. 认识变量及表达式. 第二讲. stop. 函数. 第三讲. Vfp 基本操作. 实训一.
E N D
任务二 用visualfoxpro数据形式进行数据处理 • 内容提要: 数据类型 数据存储 表达式 常用函数 • 学习目的与要求: 了解内存变量的显示和清除、日期格式的设置 熟悉常量、变量、表达式、函数的概念 掌握常量、变量、表达式、函数的各种规则及使用 • 重点:掌握常量、变量、表达式、函数的规则 • 难点:常量、变量、表达式、函数的使用
任务二 用visualfoxpro数据形式进行数据处理 认识数据类型和常量 第一讲 认识变量及表达式 第二讲 stop 函数 第三讲 Vfp基本操作 实训一
第一讲认识数据类型及常量 • 授课内容: 数据类型 常量 • 学习目的: 了解VFP中常用的数据类型及常量的含义 熟悉并掌握各种类型常量的表示 • 重点:掌握各种类型常量的表示 • 难点:常量的使用
2.1 数据类型 1. 字符型数据 6. 日期时间型数据 7. 逻辑型数据 2. 数值型数据 8. 备注型数据 3. 整型数据 4. 货币型数据 9. 通用型数据 5. 日期型数据 退出
1. 字符型数据 字符型数据(Character)是指用各种文字字符表示的数据,包括26个英文大小写字母、10个阿拉伯数字、各种汉字、专用符号和空格等,最大长度可达254个字符。 注意:如果将阿拉伯数字定义为字符型数据时,它不具备数学上的数值含义,不能参加数学运算,如电话号码,邮编等。 2. 数值型数据 数值型数据(Numeric)是指可以进行算术运算的数据,包含0~9的阿拉伯数字、小数点与正负号,最大长度为20位。一般将需要参加数学运算的数据定义成数值型。
3. 整型数据 整型数据(Integer)是不包含小数点部分的数值型数据,以二进制形式存储,占用4个字节。 4. 货币型数据 货币型数据(Currency)装入表示货币量的数据,小数位超过4位则四舍五入,占用8个字节。 5. 日期型数据 日期型数据(Date)是用来专门表示日期的数据。 严格格式为{^YYYY-MM-DD},共占用8个字节。
6. 日期时间型数据 日期时间型数据(Date Time)是描述日期和时间的数据。其字符存储格式为{^YYYY-MM-DD,HH:MM:SS}, 7. 逻辑型数据 逻辑型数据(Logic)是用来进行各种逻辑判断的数据,只有两个值,即真(.T.)和假(.F.),长度固定为1位,占用1个字节。
8. 备注型数据 备注型数据(Memo)用于存放数据较长的字符型数据类型,固定占用4个字节的内存空间,用来存放Visual FoxPro的内部指针,实际的数据存放在与数据表文件同名的.FPT文件中,并且所存放的内容只受磁盘空间的限制。 11. 通用型数据 通用型数据(General)用于存储OLE(Object Linking and Embedding)对象,只能用于数据表中字段的定义。该字段包含了对OLE对象的引用,而OLE对象的具体内容可以是一个电子表格、文档、图片等。通用型数据长度固定为4位,实际数据长度仅受磁盘空间的限制。
2.2 常量 1、数值型常量(示例:538,-10.5) 2、货币型常量:$+数值型常量,无科学技术法,小数位数4位,自动四舍五入,占用8个字节 3、字符型常量:用定界符(单引号、双引号和方括号) 括起来的字符串。 注意:①定界符必须成对出现;②如果某种定界符也是字符串的内容,则需要用另一种定界符为该字符串定界。③不包含任何字符的字符串(〞〞)叫空串。空串与包含空格的字符串(〞 〞)不同。 (示例:“ade”‘568’ [book] “‘book’的中文意思是‘书’。”)
4、日期型常量:表示一个确切的日期,用大括号作为定界符,花括号内包括年、月、日三部分内容,各部分内容之间用分隔符(斜杠/、连字号-、句点.和空格)分隔,其中/是系统在显示日期数据时使用的默认分隔符。4、日期型常量:表示一个确切的日期,用大括号作为定界符,花括号内包括年、月、日三部分内容,各部分内容之间用分隔符(斜杠/、连字号-、句点.和空格)分隔,其中/是系统在显示日期数据时使用的默认分隔符。 (1)日期型常量的两种表示: • A、传统的日期格式 • 默认的日期型数据为美国的日期格式“mm/dd/yy”(月/日/年),月、日各占两位,年份可以是2位,还可以是4位。此格式要受命令set date to 和set century to的影响 • B、 严格的日期格式 • 用{^yyyy-mm-dd} • 注意:花括号内的第一个字符必须是^;年份必须是4位;年月日的次序不能颠倒、缺省。该格式在任何情况下均可使用。 (示例:{05/23/99},{^2001-08-16})
(2)影响日期格式的设置命令 命令格式:SET MARK TO [分割符] 命令功能:用于设置显示日期型数据时使用的分隔符,如“-”、“.”等。如果执行SET MARK TO 没有指定任何分隔符,表示恢复系统默认的斜杠分隔符。 命令格式:SET DATE[TO] MDY | DMY | YMD 命令功能:设置日期的显示格式。 命令格式:SET CENTUARY ON/OFF 命令功能:设置显示日期型数据时是否显示世纪值,OFF为2年,ON为4位年 命令格式:SET CENTUARY ON/OFF [世纪值] ROLLOVER [年份参照值] 命令功能:确定用两位数字表示年份时所处的世纪,若该日期的2位数字年份不小于[年份参照值],则它所处的世纪值为[世纪值],否则为[世纪值] +1 例如:Set century to 19 rollover 49 函数:ctod(’12/18/53’) 1953年12月18日 ctod(’12/18/45’) 2045年12月18日
命令格式:SET STRICTDATE TO [0|1] 命令功能:用于设置对日期格式是否检查。 0 表示不进行严格的日期格式检查,目的是与早期的VFP兼容。 1表示进行严格的日期格式检查,它是系统默认的设置。 • 举例:设置不同的日期格式 • SET CENTURY ON &&设置4位数字年份 • SET MARK TO &&恢复系统默认的斜杠日期分隔符 • SET DATE TO YMD &&设置年月日格式 • ?{^2001-08-26} • 2001/08/26 • 再在命令窗口键入如下4条命令,并分别回车执行: • SET CENTURY OFF &&设置2位数字年份 • SET MARK TO “.” &&设置日期分隔符为西文句号 • SET DATE TO MDY &&设置年月日格式 • ?{^2001-08-26} • 08.26.01
5、日期时间型常量:日期时间型常量 {<日期>,<时间>}。 <日期>部分与日期型常量相似,传统和严格的两种格式。 • <时间>部分的格式为:[hh[:mm[:ss]][a|p]]。其中hh 、mm和ss分别代表时、分和秒,默认值分别为12、0和0。AM(或A)和PM(或P)分别代表上午和下午,默认值为AM。如果指定的时间大于等于12,则自然为下午时间。 • 其严格的日期时间格式是:{^yyyy/mm/dd [,] hh:mm:ss[a|p]} • 例如:{^1997/12/25}表示1997年12月25日。 • {^2006/10/01 11:30 a}表示2006年10月1日下午11点30分。 (示例:{05/16/99 12:00:00}) 6、逻辑型常量(示例:.t. .T. .f. .F. .Y. .N. .y. .n.)在表示逻辑型常量的字母左右必须加句点定界符。此定界符必不可少,否则会被误认为变量名 返回 结束
第二讲 认识变量及表达式 • 授课内容: 变量、表达式的概念 字段变量、内存变量 表达式分类 • 学习目的: 了解内存变量的显示、清除等命令 熟悉变量、表达式的概念、特点 掌握内存变量的建立与赋值,表达式的运算规则 • 重点:掌握内存变量的建立与赋值,表达式的运算 规则 • 难点:变量概念的理解及应用
任务一:定义字符变量,货币变量,数值 变量,逻辑变量,并给每个变量赋值 • 任务二:输出内存变量、字段变量的值 • 任务三:显示内存变量,清除内存变量 • 任务四:用表达式表示“年龄不大于18或不小于 22的男同学”
2.3.1 变量 变量:在使用过程中其值可以改变的量。Vfp中包括字段变量和内存变量。 变量的确定:变量名、数据类型和变量值 变量名:汉字、英文字母、数字、下划线,汉字或字母开头 1. 字段变量 (1)字段变量隶属于数据表文件。 (2)数据表是存在于计算机中的一个二维表格,数据表中的每一列称为一个字段,是数据表进行数据处理的基本单位;数据表中的每一行内容称为一条记录,由若干个相关联的字段组成。 (3)在数据表中,字段必须先定义后赋值,然后才可以使用。 (4)字段变量名由汉字、字母、数字和下划线组成,必须以字母或汉字开头。 (5)字段变量的常用类型有9种,与前面的数据类型相同。
2. 内存变量 (1)内存变量:存在于内存中的变量,常被用来存储所需要的常数、中间结果或最终结果。变量名由汉字、字母、数字和下划线组成,必须由字母或汉字开头。 (2)当内存变量名与字段变量名相同时,字段名优先于内存变量名,使用时可以在内存变量名前加上“M->”以示区别,但赋值时不能使用该前缀。 1)内存变量的建立与赋值 格式:STORE <表达式> TO <内存变量名表> 或 <内存变量名>=<表达式> 功能:a、计算<表达式>的值并赋给指定的内存变量 b、等号一次只能赋一个值,store可同时给若干个变量赋同一个值 c、可通过内存变量重新复制来改变其内容和类型
2)表达式值的显示 ?[<表达式表>]换行输入表达式的值 ??[<表达式表>]在当前行的光标所在处输入表达式的值 • 示例: B=6 STORE B+3 TO C STORE “中国” TO A,B,C 3)内存变量的显示 格式:LIST / DISPLAY MEMORY [LIKE <通配符>] [TO PRINTER / TO FILE <文件名>] [NOCONSOLE] 说明:通配符指“?(任意一个)”和“*(任意多个)” <文件名>的扩展名为.TXT LIST和DISPLAY区别为:LIST连续显示;DISPLAY分页显示。 示例:A=“中国” A1=5 LIST MEMORY LIKE A*
4)内存变量的清除 格式1: RELEASE <内存变量名表>:清除指定的内存变量 格式2: RELEASE ALL [LIKE <通配符>/EXCEPT <通配符>]: 选择LIKE短语清除于通配符相匹配的内存变量;用 EXCEPT短语清除与通配符不匹配的内存变量 例如:RELEASE ALL LIKE A? 表示只清除变量名以A开头且不超过2个字符的所有内存变量 RELEASE ALL EXCEPT A* 表示只变量名不以A开头的所有内存变量 格式3: CLEAR MEMORY:清除所有内存变量 格式4: RELEASE ALL[EXTENED]:清除所有内存变量,在 程序中加上短语EXTENED清除公共变量
例如:在命令窗口中依次输入下列命令 CLEAR MEMORY A=.T. AB=12 ABC=“信息工程系” ABBC=25 AUC={^2006-08-29} LIST MEMORY LIKE A* LIST MEMORY LIKE A?C LIST MEMORY LIKE A? RELEASE ALL LIKE ?B RELEASE A,AUC
2.3.2 数组 数组是内存中连续的一片存储区域,它由一系列元素组成,每个数组元素可通过数组名及相应的下标来访问;每个数组元素相当于一个简单变量,可给各元素分别赋值 (1)数组变量:一组变量的集合,这些变量的数据类型可以不同,每个数组元素都可以通过一个数值下标被引用,相当于一个内存变量,在VFP中,一个数组中各元素的数据类型可以不同 (2)数组元素的数据类型是通过所赋值的数据类型来确定的。 (3)一维数组:各个元素按线性排列; 二维数组:类似于一个数据表,第一维是行,第二维是列。
1. 创建数组的命令格式 命令格式:DIMENSION/DECLARE <数组名1>(<下标上限1> [,<下标上限2>]) [,<数组名2>(<下标上限3> [,<下标上限4>])]… 说明:(1)<下标上限>为数组下标,对一维数组来说,指的是数组元素的个数;对二维数组来说,指的是数组的最大行号和最大列号。 (2)数组的下标允许使用圆括号或方括号括起来。 (3)在同一个数组中,不同的数组元素数据类型可以不同 (4)数组一旦被定义之后,该数组的每个元素的初值为逻辑假,可以使用有关的命令给数组元素赋值。 (5)在赋值和输入语句中使用数组名时,表示将同一个值赋给该数组的全部数组元素 (6)可以用一维数组的形式访问二维数组 示例:DIMENSION A(3),B(2,3) A(3): A(1),A(2),A(3) B(2,3) :B(1,1),B(1,2),B(1,3),B(2,1),B(2,2), B(2,3)
2. 数组的赋值 数组元素的赋值与普通内存变量一样,可以通过STORE命令或“=”来实现。 示例: 给二维数组X和一维数组Y进行赋值。 DIMENSION X(3,4),Y(3) STORE 5 TO X Y(1)=325 Y(2)=“ABC” Y(3)=.T.
3、VFP表中数据与数组数据之间的交换 (1)将表中当前记录复制到数组 格式:SCATTER [FIELDS <字段名表>] TO <数组名> 功能:将当前表中当前记录的指定字段依次复制到数组中从第一个数组元素开始的所有数组元素中。 注释:●FIELDS用来指定要复制的字段,否则复制除备注型(M)和通用型(G)以外的所有字段. ● 对数组的复制: ①若事先没有创建数组,该命令执行时系统自动创建; ②若已创建的数组元素个数少于字段数,系统自动建立其余数组元素; ③若已创建的数组元素个数多于字段数,其余数组元素的值保持不变。 例如:打开表文件“学生”,执行以下命令 USE 学生 GO 3 SCATTER FIELDS 学号,姓名,性别,出生日期 TO xs ?xs(1), xs(2), xs(3), xs(4)
(2)将数组数据复制到表的当前记录 格式:GATHER FROM <数组名> [FIELDS <字段名表>] 功能:将数组中的数据作为一个记录复制到表的当前记录中,从而改变了表的当前记录值。 注释: ●从第一个数组元素开始,依次向<字段名表>指定的字段填写数据; ●若缺省FIELDS选项,则依次向各个字段复制,如果数组元素个数多于记录中字段的个数,则多于部分被忽略。 例如:利用数组个表文件“学生”添加一条记录 DIMENSION K(4) K(1)=“赵鼎一” K(2)=“02010612” K(3)=“男” K(4)={^1981-07-14} USE 学生 APPEND BLANK GATHER FROM K FIELDS 姓名,学号,性别,出生日期 ?姓名,学号,性别,出生日期
2.3.3 表达式 概念:用运算符及圆括号将常量、变量、和函数连接起来的式子称为表达式。 运算符:对相同类型数据进行运算操作的符号。 根据表达式值的类型,表达式可分为:数值表达式,字符表达式,日期时间表达式和逻辑表达式(包括关系表达式) 1)数值表达式 (1)数值表达式:由数值运算符将数值型常量、变量、函 数等连接起来的式子,其结果为数值型。 (2)数值运算符:圆括号()、乘方(**或^)、乘(*)、除(/)、模运算或取余(%)、加(+)、减 (3)运算符的优先顺序:括号、乘方、乘除与取模、加减 (4)取模运算:结果为两数相除后的余数 示例:5+7,70/(5+2),7*8**2,10%3,10%-3,-10%3,-10%-3
2)字符表达式 (1)字符表达式:由字符串运算符将字符型常量、变量、函 数等连接起来的式子。 (2)字符串运算符:加(+)将前后两个字符串首尾相连形成一个新字符串; 减(-)连接前后两个字符串,并将前边字符串的尾部空格移到合并后的新字符串的尾部,长度为原两串长度之和。 示例: A=“学习” B=“计算机” C=“基础” ?A+B+C ? A-B-C
3) 日期表达式 (1)日期表达式:由日期运算符将日期型常量、变量、函数等数据连接起来的式子,其返回结果为日期型或者数值型数据。 (2)日期型运算符:加法(+)、减法(-) (3)日期表达式的几种形式: <日期型数据>+<数值型数据> <数值型数据>+<日期型数据> <日期型数据>-<数值型数据> <日期型数据>-<日期型数据> 示例:{01/01/1996}+20 {05/30/1998}-{05/20/1998} {10/28/1995}-20
4)日期时间表达式 (1)日期时间运算符:+,- (2)合法的日期时间表达式 <日期时间>+<秒数>结果为日期时间型 <秒数>+<日期时间>结果为日期时间型 <日期时间>-<秒数>结果为日期时间型 <日期时间>+<日期时间>结果为数值型(秒数)
5)关系表达式 关系表达式也称为简单的逻辑表达式 (1)关系表达式:由关系运算符、数值表达式、字符表达式或日期表达式组合而成的式子,返回结果为逻辑值。 (2)关系运算符:小于(<)、大于(>)、等于(=)、不等 于(<>、#或!=)、小于等于(<=)、大于等于(>=)、字符串精确比较(= =)、子串包含测试($)。 (3)关系运算符的两边,可以是字符表达式、数值表达式或日期表达式,但两边的数据类型必须一致才能进行比较。 注释:●数值型、货币型数据都按数值的大小进行比较,包括符号 ●日期、日期时间型数据的比较:越早的日期或日期时间越小 ● 逻辑型数据比较:.T.>.F. ●子串包含测试($):检测左边的字符串是否被包含在右边的字符串中。如果包含,返回逻辑真值(.T.),否则返回逻辑假值(.F.)。
●字符串精确比较(= =)与EXACT设置 用==比较两个字符串时,只有当两个字符串无安全相同时,结果才为逻辑.真.,否则为逻辑.假. 用=比较两个字符串时,与SET EXACT OFF|ON的设置有关,该命令可在命令窗口或在程序中执行,也可通过“数据”选项卡设置。 ①当系统处于默认的OFF状态时,若=右边的字符串是左边的左子串,则表达式的值为真,否则为假。 例如:“李晓刚”=“李”为真,但“李”=“李晓刚”为假 ②当系统处于ON状态时,若两串长度不等,那么先在较短字符串尾部加若干空格,使两串长度相等,然后再比较,此时若两串完全一致,则表达式的值为真,否则为假。 例如:“李晓刚”=“李”为假,“A”=“A ”为真 ●设置字符的排序次序 在人机对话方式下:工具—选项—数据选项卡—排序序列 命令方式:SET COLLATE TO <排序次序名> MACHINE: 空格<大写字母<小写字母<汉字 PINYIN:空格<小写字母<大写字母<汉字 STROKE:按书写笔划数排序
6)逻辑表达式 (1)逻辑表达式:由逻辑运算符、逻辑型常量、逻辑型内存变量、逻辑型数组、返回逻辑型数据的函数和关系表达式组成,结果为逻辑型常量。 (2)逻辑运算符:逻辑非(.NOT.)→逻辑与(.AND.) →逻辑或(.OR.) (3)运算规则:进行逻辑与运算时,当参加运算的双方都为真值时,运算结果为真值,否则为假值;进行逻辑或运算时,当参加运算的双方都为假值时,运算结果为假值,否则为真值;进行逻辑非运算时,运算结果为原来的相反值。 示例:8>3.AND.8<10 “A”>“C”.OR.“A”<“C” .NOT.5<6 (4)运算符优先级:算术运算符→字符串运算符、日期时间运算符→关系运算符→逻辑运算符 返回 结束
第三讲 函数 • 授课内容: 函数概念 各类函数介绍 • 学习目的: 了解函数的构成 熟悉简单函数的格式、功能 掌握round、len、str、val、iif等重要函数的功能 • 重点:掌握几种常用函数的格式、功能 • 难点:对函数的理解和应用
2.4 常用函数 函数的构成:函数名(<参数1>[,<参数2> …]) 2.4.1 数值函数 2.4.2 字符函数 2.4.3 日期和时间函数 2.4.4 数据类型转换函数 2.4.5 测试函数 退出
2.4.1 数值函数 数值函数指函数值为数值的一类函数; 其参数和函数值都是数值型数据 1.取绝对值函数ABS() 格式:ABS(<数值表达式>) 示例:?ABS(-20) 2.求平方根函数SQRT() 格式:SQRT(<数值表达式>) 示例:?SQRT(16) 3.圆周率函数PI() 格式:PI() 功能:返回圆周率的值,该函数无参数,返回数值型数据
4.取整函数INT() 格式:INT (<数值表达式>) 功能:返回指定数值表达式的整数部分 示例:?INT(5.96) ?INT(-8.66) ?INT(10.98-2.43) 5. 四舍五入函数ROUND() 格式:ROUND(<数值表达式1>,<数值表达式2>) 功能:返回数值表达式1在指定位置四舍五入后的结果。 <数值表达式2>指定四舍五入的位置。 示例:?ROUND(345.6799,3) ?ROUND(345.6799,0) ?ROUND(345.6799,-2)
6.求余数函数MOD() 格式:MOD(<数值表达式1>,<数值表达式2>) 说明:函数返回值的符号与<数值表达式2>的符号相同。 示例:?MOD(10,3) ?MOD(10,-3) ?MOD(15,-4) ?MOD(-15,-4) 7. 最大值MAX()和最小值函数MIN() 格式:MAX(<数值表达式1>,<数值表达式2>…) 示例:?MAX(10,20) ?MAX(-10,-20) 格式:MIN(<数值表达式1>,<数值表达式2>…) 示例:?MIN(10,20) ?MIN(-10,-20) 注:表达式的类型必须一致,可以使数值,字符,日期等
2.4.2字符函数 1.求字符串长度函数LEN() 格式:LEN(<字符表达式>):返回字符个数 示例:?LEN(“ABCDF”) ?LEN(“AB C D F”) X=“首都经贸大学” ?LEN(X) 2.字符串转换成大、小写字母函数 格式:LOWER(<字符表达式>) 示例:?LOWER(“ABDF”) 格式:UPPER(<字符表达式>) 示例:?UPPER(“abde”) 只将字母进行转换,其余不变
3.生成空格函数SPACE() 格式:SPACE(<数值表达式>):返回空格 示例:?“北京”+SPACE(3)+“首都” 4. 删除字符串首尾部空格函数 格式:TRIM(<字符表达式>):去掉字符表达式尾部空格 示例:A=“I am a teacher. ” ?TRIM(A) 格式:LTRIM(<字符表达式>):去掉前导空格 示例:A=“ I am a teacher. ” ?LTRIM(A) 格式:ALLTRIM(<字符表达式>):去掉首尾空格 示例:A=“ I am a teacher. ” ?ALLTRIM(A)
5.取子字符串函数 格式:LEFT(<字符表达式>,<数值表达式>):从左边开始取 示例:?LEFT(“there,3”) 格式:RIGHT(<字符表达式>,<数值表达式>):从右边开始取 示例:?RIGHT(“what”,2) 格式:SUBSTR(<字符表达式>,<数值表达式1> [,<数值表达式2>]) <数值表达式1>:起始位置, <数值表达式2>:所取字符串的长度,缺省时,取到字符串末尾 示例:?Left(“城市经济”,4) ?right(“城市经济”,4) ?SUBSTR(“城市经济”,5,4)
6.取子串位置函数 格式:AT(<字符表达式1>,<字符表达式2>[,<数值表达式>]) 若字符表达式1是字符表达式2的子串,则返回字符表达式1的首字符在字符表达式2中第<数值表达式>指定次(默认第一次)出现的位置,否则,返回0 ATC()不区分大小写 示例: ?AT(“IS”,“THIS IS A BOOK”) ?AT(“IS”,“THIS IS A BOOK”,2) ?AT(“A”,“THIS IS A BOOK”) ?AT(“D”,“BOOK”)
7、字符串匹配函数 格式:LIKE(<字符表达式1>,<字符表达式2>) 说明:比较两个字符串对应位置上的字符,若所有对应字符都相匹配,函数返回逻辑真,否则返回逻辑假。字符表达式1中可包含通配符*/?。 示例:X=“ABC” Y=“ABCD” ?LIKE(“AB*”,X),LIKE(“AB*”,Y),LIKE(“?B?”,X)
2.4.3 日期和时间函数 1.系统当前日期函数DATE() 格式:DATE():返回系统当前日期 2.系统当前时间函数TIME() 格式:TIME([<数值表达式>]):返回系统当前时间 3.系统日期时间函数 格式:DATETIME():返回系统当前日期时间 4.求年份,月份,天数函数 格式:DAY(<日期型表达式>/<日期时间型表达式>) MONTH(<日期型表达式>/<日期时间型表达式>) YEAR(<日期型表达式>/<日期时间型表达式>) 5.时、分、秒函数 格式:HOUR(<日期时间型表达式>) MINUTE(<日期时间型表达式>) SEC(<日期时间型表达式>)
2.4.4 数据类型转换函数 1.数值型转换为字符型函数STR() 格式:STR(<数值表达式1>[,<长度>[,<小数位数>]]) 说明:1)<长度>给出转换后的字符串长度,该长度包括小数点、符号。如果缺省<长度>和<小数位数>,其输出结果将取固定长度为10位,且只取其整数部分; 2)<小数位数>给出小数位数,决定转换后小数点右面的小数位数,默认位数为0位; 3)如果<长度>的值大于<数值表达式1>给出值的数字位数时,在返回的字符串左边添加空格; 4)若长度大于等于<数值表达式>值得整数位数(包符号)但又小于<数值表达式>值的位数,则优先满足整数部分而自动调整小数位数,使所得字符串达到规定的<长度>要求 4)如果<长度>的值小于数值表达式值的整数位数,将返回一串星号,表示数值溢出。 示例:?str(95643.5136) ?str(95643.5136,8,2) ?str(95643.5136,8) ?str(95643.5136,3)
2.字符型转换成数值型函数VAL() 格式:VAL(<字符表达式>) 说明:将数字符号(符号、小数点)组成的字符型数据转换成相应的数值型数据。 1)<字符表达式>的值必须是数字形式的字符串,它只能含有数字、正负号和小数点; 2)转换时,如果遇到非数字字符则停止。如果字符型表达式的第一个字符即非数字字符,则返回0,默认小数位数2位; 示例:?VAL(“8769.3421”) ?VAL(“8769AB21”) ?VAL(“AB8769.3421”)
3.字符型转换成日期型函数CTOD() 格式:CTOD(<字符表达式>) 说明:<字符表达式>必须是一个有效的日期格式。 示例:?CTOD(“09/23/01”) 4.日期型转换成字符型函数DTOC() 格式:DTOC(<日期型表达式>/<日期时间型表达式>[,1]) 说明:如果有[,1]选项,则按照年月日的格式输出。 示例:X=CTOD(“09/10/99”) ?DTOC(X) ?DTOC(X,1)
5. 宏代换函数& 格式:&<字符型内存变量>[.<字符表达式>] 功能:替换字符型变量的内容,即<字符型变量>值去掉定界符后的内容。若有二义性,则用“.”作函数结束标志。 示例:aa=“bb” bb= “北京” ?aa,bb,&aa ?“&bb.是中国的首都” n=“567.83” ?356.08+&n
2.4.5 测试函数 1. 表文件开始测试函数 格式:BOF([<工作区号或别名>]) 说明:检测当前或指定工作区中表的记录指针是否位于第一条记录之前,如果是,返回真值(.T.),否则返回假值(.F.)。 示例:USE 学生表 ?BOF() SKIP -1 ?BOF() 2. 表文件结束测试函数 格式:EOF([<工作区号或别名>]) 说明:检测当前或指定工作区中表的记录指针是否位于最后一条记录之后,如果是,返回真值(.T.),否则返回假值(.F.)。 示例:USE 学生表 ?EOF() GO BOTTOM ?EOF() SKIP 1 ?EOF()
3.记录号测试函数 格式:RECNO([<工作区号或别名>]) 功能:给出当前或指定工作区中当前记录的记录号。函数返回值为数值型。 示例: USE 学生表 ?RECNO() GOTO 4 ?RECNO() 4、值域测试函数 格式:BETWEEN(<表达式1>,<表达式2>,<表达式3>) 功能:判断<表达式1>的值是否介于<表达式2>和<表达式3>之间,若是返回真,否则返回假 示例:?BETWEEN(45,60,100)
5、数据类型测试函数 格式:VARPTYPE(<表达式>[,<逻辑表达式>]) TYPE(<字符表达式>) 功能:VARTYPE()测试表达式的类型,返回一个大写字母,函数值为字符型; 注:1)若指定的表达式是一个数组,返回第一个元素类型 2)若表达式的运算结果是NULL,根据逻辑表达式之返回函数值,即当逻辑表达式值为真时函数返回表达式的原数据类型;当逻辑表达式值为假时或缺省时,函数返回值为X,表明表达式的运算结果是NULL TYPE()测试字符表达式值去掉一对定界符后的类型,返回一个大写字母,函数值为字符型,若去掉一对定界符后形成的表达式是HULL,则返回字母L,而不是X。