第二章 数据类型表达式和函数

161
封封

Upload: giulia

Post on 19-Jan-2016

137 views

Category:

Documents


0 download

DESCRIPTION

封面. 第二章 数据类型表达式和函数. 1 常量与变量. 2. 运算符与表达式. 3. 常用函数. 2.1 常量与变量. 2.1.1 常量. 常量 是指操作过程中其值固定不变的数据,是一个具体的数据内容。 例如字符串、常数或具体的日期。. 数值型常数. 由数字 0-9 、小数点及正负号构成 可用科学计数法表示 : 1.2345E+3 表示 1.2345×103 ,即 1234.5 ; 2.45E-4 表示 2.45×10-4 ,即 0.000245. 货币型常数. 货币型常量表示货币在数值前加上一个货币符号 ($) 。 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第二章 数据类型表达式和函数

封面

Page 2: 第二章 数据类型表达式和函数

第二章 数据类型表达式和函数

1 常量与变量

2. 运算符与表达式

3. 常用函数

Page 3: 第二章 数据类型表达式和函数

2.1 2.1 常量与变量常量与变量

Page 4: 第二章 数据类型表达式和函数

2.1.1 常量

常量常量是指操作过程中其值固定不变的数据,是一个具体的数据内容。例如字符串、常数或具体的日期。

Page 5: 第二章 数据类型表达式和函数

数值型常数

由数字 0-9 、小数点及正负号构成

可用科学计数法表示 :1.2345E+3 表示 1.2345×103 ,即 1234.5 ;2.45E-4 表示 2.45×10-4 ,即 0.000245

Page 6: 第二章 数据类型表达式和函数

货币型常数

货币型常量表示货币在数值前加上一个货币符号 ($) 。

货币型常量在存储和计算时,采用 4 位小数。当货币型常量超过 4 位小数时,多余的小数位将四舍五入

Page 7: 第二章 数据类型表达式和函数

字符常数

字符型常量字符型常量是用英文的单引号、双引号或方括号括起来的一串字符,也称为字符串。字符可以是英文字母、数字、标点符号等所有 ASCII 码字符及汉字。例如:’’湖南长沙’’、’ 0731-8821234’ 、 [smith] 都是字符串。

Page 8: 第二章 数据类型表达式和函数

字符常数

单引号、双引号或方括号是字符串的定界符定界符,它们用来规定字符串的起始和终止界限,不作为字符串本身的内容。字符串的定界符必须成对匹配,即当一边以单引号作为定界符时,另一边也必须以单引号作为定界符。此外,如果字符串本身含有作为定界符的字符,则必须用另一种符号作为定界符。

Page 9: 第二章 数据类型表达式和函数

字符常数

字符串的长度字符串的长度是指字符串中所含字符的个数,其中,每个汉字相当于 2 个字符。字符串的最大长度不能超过 254 。

只有定界符没有任何字符的字符串称为空空串串,其长度为 0 。

Page 10: 第二章 数据类型表达式和函数

日期型常数

默认情况下,日期型常量要使用严格的日期格式{^yyyy-mm-dd}{^yyyy-mm-dd} 。

以花括号 { } 作为定界符,花括号内第一个符号是 ^ ,年份必须为四位,年月日的次序不能颠倒或缺省。

年月日的分隔符可以为 / (斜杠)、 _ (下划线)、 . (圆点)或空格。例如, {^2008-8-1} {^2008/08/01} {^2008.8.1} {^2008 8 1} 均表示 2008 年 8 月 1 日。

Page 11: 第二章 数据类型表达式和函数

日期型常数

若要设置传统的日期格式,则应执行 SET SET STICTDATE TO 0STICTDATE TO 0 命令。默认用 {mm/dd/yy} 或 {mm/dd/yyyy} 表示日期常量。例如, {6/25/08} 或 {6/25/2008}均表示 2008 年 6 月 25 日。若要恢复为严格的日期格式,执行 SET SET STICTDATE TO 1STICTDATE TO 1 命令

Page 12: 第二章 数据类型表达式和函数

提示

本书在介绍命令时,约定方括号 [] 中的内容表示可选,竖杠 | 分隔的内容表示任选其一,尖括号 <> 中的内容由用户提供。

Page 13: 第二章 数据类型表达式和函数

SET DATE TO SET DATE TO [ AMERICAN |ANSI |BRITISH|

FRENCH|GERMAN|ITALIAN|JAPAN|USA|

MDY|DMY|YMD]

设置日期的显示格式 ,缺省格式为AMERICAN ,即 mm/dd/yy 。

设置日期显示的格式

Page 14: 第二章 数据类型表达式和函数

设置日期格式的参数 短语 格式 短语 格式 短语 格式

YMD yy/mm/dd MDY mm/dd/yy DMY dd/mm/yy

AMERICAN/USA

mm/dd/yy ANSI yy.mm.dd GERMAN dd.mm.yy

BRITISH/FRENCH

dd/mm/yy ITALIAN dd-mm-yy JAPAN yy/mm/dd

Page 15: 第二章 数据类型表达式和函数

SET CENTURY ON/OFFSET CENTURY ON/OFF

设置显示日期时是否显示世纪值。当使用 ON,显示世纪值,即年号以 4 位显示;使用 OFF,不显示世纪值,即年号以 2 位显示。

设置是否显示世纪值

Page 16: 第二章 数据类型表达式和函数

SET CENTURY OFF && 设置 2 位数字年份SET DATE TO YMD && 设置年月日格式?{^2008-6-1} && 显示结果为 08/06/01SET STRICTDATE TO 0

&& 设置不进行严格的日期格式检查SET CENTURY ON && 设置 4 位数字年份SET DATE TO DMY && 设置日月年格式? {^2008-6-1},{1/7/08}

&& 显示结果为 01/06/2008 和 01/07/2008

例题例题

Page 17: 第二章 数据类型表达式和函数

日期时间型常数

日期时间型常量包括日期和时间两部分 { 日期 ,时间 } 。日期部分的格式和日期型常量相似,时间部分的格式为 HH:MM:SS [A|P] 。 HH 、 MM 、 SS 分别表示时、分、秒, A 、 P 分别表示上午和下午。时、分、秒可以缺省,默认值为 12 、 0 、 0 。A 、 P 可以缺省,默认为上午。注意:日期和时间之间必须用逗号或空格隔开。

Page 18: 第二章 数据类型表达式和函数

{^2008-6-1, } 表示 2008年 6 月 1 日上午 12

点(午夜)

时间部分可以采取 24小时制,当时间大于或等于12,则自然表示下午。例如, {^2008-6-1 1:20:30 P} 和 {^2008-6-1 13:20:30}均表示 2008年 6 月 1 日下午 1 点20分 30秒

日期时间型常数

Page 19: 第二章 数据类型表达式和函数

区域选项卡工具(T)

选项(O)

设置日期格式

Page 20: 第二章 数据类型表达式和函数

逻辑常数

逻辑型常量只有逻辑真和逻辑假两个值。

逻辑真值用 .t.,.T.,.y.,.Y. 表示,逻辑假值用 .f.,.F.,..n,.N. 表示

注意:圆点作为逻辑型常量的定界符,必不可少。

Page 21: 第二章 数据类型表达式和函数

2.1.2 内存变量

分为字段变量和内存变量

内存变量内存变量:独立于数据表而存在,通常用来存放命令操作或程序运行过程中的一些中间结果。

内存变量的值在操作过程中可以被改变。退出 VFP 后,内存变量将被自动释放。

Page 22: 第二章 数据类型表达式和函数

变量命名规则

变量名以字母、汉字或下划线开头,由数字、字母、汉字或下划线组成。名称最长可达 254 个字符。

A 、 Class_2 、年龄 合法的变量名3Grade 、 b* 非法的变量名

不要使用 VFP 的保留字作为变量名。

Page 23: 第二章 数据类型表达式和函数

< 内存变量 >==< 表达式 >

STORE STORE < 表达式 > TOTO < 内存变量列表 >

计算表达式的值,再将该值赋给内存变量。

内存变量的赋值

Page 24: 第二章 数据类型表达式和函数

等号 = 一次只能给一个变量赋值, Store 可同时给多个变量赋同一个值。多个变量之间用逗号隔开。简单变量赋值时无需事先声明或定义。当变量被赋值时,若该变量此时还不存在,系统将建立此变量,即在内存中为其定义一个存储区域。变量的值和数据类型由最后赋予它的表达式决定。当变量被重新赋值时,其值发生改变。若新值为其他数据类型,则变量的数据类型也相应地发生改变。

内存变量的赋值

Page 25: 第二章 数据类型表达式和函数

n1=3

&& 把数值 3 赋给内存变量 n1, n1 是数值型内存变量 name=‘王波’ && 把字符串赋给内存变量 name, name 是字符型内存变量

例题例题

store {^2008/6/1} to 日期 1, 日期 2

&& 把日期常量 2002 年 9 月 12 日同时赋给内存变量日期 1 和日期 2, 日期 1 和日期 2 是日期型内存变量l=.t.

&& 把逻辑真值 .t. 赋给内存变量 l,l 是逻辑 型内存变量

Page 26: 第二章 数据类型表达式和函数

n2=n1

&& 计算表达式 n1 的值为 3 ,将 n2 赋值为 3

n1 的值不受影响

n2=n2+1

&& 计算表达式 n2+1 的值为 4 ,将 n2 赋值为 4

n2=‘n2+1’

&& 将字符串 n2+1 赋值给变量 n2, n2 是字符型内存变量

例题例题

Page 27: 第二章 数据类型表达式和函数

? ? [< 表达式表 > ]

?? ?? [< 表达式表 > ]

计算表达式的值,将其显示在窗口工作区。? 命令首先换行,在当前行的下一行显示表达式的值。??命令不换行,在当前行的光标处显示表达式的值。?/??可接多个表达式,表达式之间用逗号隔开。

显示表达式的值

Page 28: 第二章 数据类型表达式和函数

?’n1=’,n1

&&’n1=’ 为字符型常量, n1 为变量,窗口工作区显示 n1=3

?n2

&& 窗口工作区另起一行,显示 n2+1

??name

&& 窗口工作区在 n2+1 的后面显示王波

例题例题

Page 29: 第二章 数据类型表达式和函数

LIST/DISPLAY MEMORY LIST/DISPLAY MEMORY

[ LIKE LIKE < 通配符 >]

[ TO PRINTER| TO FILE TO PRINTER| TO FILE < 文件名 >]

显示内存变量的当前信息,包括变量名、作用域、类型、取值。

内存变量的显示

Page 30: 第二章 数据类型表达式和函数

使用 LIST MEMORYLIST MEMORY ,在屏幕上以滚动方式显示,不分屏显示;使用 DISPLAY MEMORYDISPLAY MEMORY ,分屏显示 , 即显示了一屏后,显示暂停,提示“按任意键继续”,按下任意键后,继续显示下一屏。

内存变量的显示

Page 31: 第二章 数据类型表达式和函数

LIKELIKE 通配符表示只显示与通配符相匹配的内 存变量。通配符 * 表示任一串字符, ? 表示任一个字符。VFP 有 74 个系统变量。如果用户只要求显示所有自定义变量,可以使用命令DISPLAY MEMORY LIKE * 。

内存变量的显示

Page 32: 第二章 数据类型表达式和函数

TO PRINTERTO PRINTER 子句,表示将显示的信息同时送打印机打印。

TO FILETO FILE < 文件名 > 子句,表示将显示的信息存入指定的文本文件,文件的扩展名为 txt 。

内存变量的显示

Page 33: 第二章 数据类型表达式和函数

display memo like * && 显示用户定义的全部内存变量

display memo like n* && 显示以字母 n 开头的所有内存变量,即 n1,name 和 n2

display memo like n? && 显示以字母 n 开头,且名称不多于两个字符组成的内存变量 即 n1 和 n2

例题例题

Page 34: 第二章 数据类型表达式和函数

RELEASE RELEASE < 变量名表 >]

清除内存变量

内存变量的清除

RELEASE RELEASE < 变量名表 >] ALLALL

[LIKE LIKE < 通配符 >| EXCEPT EXCEPT < 通配符>]

CLEAR MEMORYCLEAR MEMORY

Page 35: 第二章 数据类型表达式和函数

提示

在输入命令时,命令中的保留字可只输入前 4 个字符。例如 display memory 可简化为 disp memo

Page 36: 第二章 数据类型表达式和函数

CLEAR MEMORYCLEAR MEMORY和 RELEASE ALLRELEASE ALL清除内存中所有内存变量。

RELEASE内存变量名表清除指定的内存变量。

使用 LIKE子句,清除符合通配符的变量;使用 EXCEPT子句,清除不符合通配符的变量。

内存变量的清除

Page 37: 第二章 数据类型表达式和函数

Release 日期 1, 日期 2

&&清除变量日期 1 和日期 2

Release all like n*

&&清除所有变量名以 n 开始的变量,即 n1,n2和name。Disp memo like *

&&此时,显示的变量有 l

例题例题

Page 38: 第二章 数据类型表达式和函数

2.1.3 数组

内存变量又分为简单内存变量简单内存变量和数组数组。每一个简单变量只占用内存中的一个存储区域,存储一个值。而一个数组在内存中占用连续的一组存储区域,由多个数组元素组成。每个数组元素占用一个存储区域,相当于一个简单变量。用户通过数组名和下标来访问数组元素。

Page 39: 第二章 数据类型表达式和函数

DIMENSIONDIMENSION < 数组名 > ( < 下标上限 1>[, < 下标上限 2>])[,

……]

DECLARE DECLARE < 数组名 > ( < 下标上限 1>[, < 下标上限 2>])[,

……]

DIMENSION 和 DECLARE 两种命令的功能相同,定义多个一维数组或二维数组数组的下标下限规定为 1 ,一维数组的元素个数为下标上限 1 ,二位数组的元素个数为下标上限 1* 下标上限 2 。

数组的创建

Page 40: 第二章 数据类型表达式和函数

DIMENSION m(4),n(2,3)命令定义了数组 m 和 n 。&&m是一维数组, 4 个数组元素 :m(1)、 m(2)、 m(3)、 m(4)。&&n是二维数组,有 6 个数组元素 :n(1,1)、 n(1,2)、n(1,3)、 n(2,1)、 n(2,2)、 n(2,3)。

可以用一维数组的形式访问二维数组。例如二维数组 n 如果用一维数组表示,依次为n(1)、 n(2)、 n(3)、 n(4)、 n(5)、 n(6)。即 n(4)和 n(2,1)是同一个数组元素。

例题例题

Page 41: 第二章 数据类型表达式和函数

数组创建后,系统自动给每个元素赋以逻辑值假逻辑值假。通过对数组名赋值,可以将同一个值同时赋给全部的数组元素。每个数组元素可分别赋值,同一数组中各数组元素类型可以不同

数组的赋值

Page 42: 第二章 数据类型表达式和函数

DIMENSION m(4),n(2,3) &&定义了一维数组 m 和二维数组 n 。? m(1),n(1,1) &&数组创建后,每个数组元素的初值为逻辑值假。m=5 &&通过对数组名赋值将所有数组元素赋值为 5?m(1),m(2),m(3),m(4)n(1,1)=1n(1,2)=‘ 中国’n(1,3)={^2008/10/1} &&每个数组元素可分别赋值,数据类型可以不同

例题例题

Page 43: 第二章 数据类型表达式和函数

2.2 2.2 运算符与表达式运算符与表达式

表达式是由常量、变量、函数通过特定的运算符连结起来的有意义的式子。每一个表达式经过运算,将得到一个具体的结果,称为表达式的值。

n1*0.85 + sqrt(9)

变量

运算符

常量 函数

Page 44: 第二章 数据类型表达式和函数

表达式表达式

根据表达式值的类型,可将表达式分为数值表达式、字符表达式、日期表达式和逻辑表达式。单个的常量、变量和函数,也可以看作一种特殊的表达式。

Page 45: 第二章 数据类型表达式和函数

2.2.1 数值型表达式

Page 46: 第二章 数据类型表达式和函数

( )

**** 或 ^̂ ( 乘方) 2**4 表示 24 值为 16

* / %* / % (求余) 10%3 表示 10 除 3 的余数值为 1

+ —+ —

优先级

算数运算符

Page 47: 第二章 数据类型表达式和函数

?1+5^2*2 && 结果为 51 。首先进行乘方运算,再进行乘法运算,最后进行加法。

例题例题

用表达式表示2*32 +1.2

4+ 4

5

?(2*3^2+1.2)/(4+4/5) && 对于某些数学算式,注意利用括号来改变优先级

Page 48: 第二章 数据类型表达式和函数

例题例题

对于求余运算,余数的正负号与除数相同? ?10%3,10%(-3),-10%3,-10%-3

&& 结果为 1,-2,-1,2

10-3

4

余数为 -2

10-3

-3

余数为 1

&& 表达式的值为 -2

Page 49: 第二章 数据类型表达式和函数

2.2.2 字符型表达式

Page 50: 第二章 数据类型表达式和函数

连接运算符++ 号 : 将前后两个字符串连接起来,形成一个新的字符串。 ——号:将前后两个字符串连接起来,若第一个字符串的尾部有空格,则将空格移到合并后字符串的尾部,其他位置的空格不改变位置。

字符型运算符

Page 51: 第二章 数据类型表达式和函数

?“ This “+”is”

&& 表达式的结果为“ This is”

保留前一字符串的尾部空格?“ This “-”is”

&& 表达式的结果为“ Thisis ”

将前一字符串的尾部空格移到最后?“ This is “-”a book”

&& 表达式的结果为“ This isa book ”

例题例题例题例题

Page 52: 第二章 数据类型表达式和函数

?“2+3”,2+3,“2”+“3”

&& 字符常量 2+3

2 与 3 相加为 5

字符 2 连接字符 3 结果为 23

例题例题例题例题

Page 53: 第二章 数据类型表达式和函数

2.2.3 日期型表达式

Page 54: 第二章 数据类型表达式和函数

日期 1+天数 日期 2 或天数 + 日期 1

日期 2

将日期向后推整数的天数得到新的日期日期 1—天数 日期 2

将日期向前推整数的天数得到新的日期

日期 1— 日期 2 整数 +1

将两个日期相减得到相差的天数排在后面的日期大于排在前面的日期

日期型运算符

Page 55: 第二章 数据类型表达式和函数

日期时间 1+秒数 日期时间 2 秒数 + 日期时间 1 日期时间 2 将日期时间向后推整数的秒数得到新的日期时间

日期时间 1— 秒数 日期时间 2 将日期时间向前推整数的秒数得到新的日期时间日期时间 1— 日期时间 2 整数 +1

将两个日期时间相减得到相差的秒数排在后面的日期大于排在前面的日期

日期型运算符

Page 56: 第二章 数据类型表达式和函数

? {^2008/10/1}+7 && 表达式的值为 2008/10/8 ,将 2008 年 10 月 1日向后推 7天? {^2008/10/1}-7 && 表达式的值为 2008/9/24 ,将 2008 年 10 月 1日向前推 7天? {^2008/10/1}-{^2008/5/1} && 表达式的值为 153 ,两个日期相差的天数

例题例题例题例题

Page 57: 第二章 数据类型表达式和函数

? {^2008-8-8 8 am}+10000 && 表达式的值为 2008 年 8 月 8 日 8 点 46 分 40秒,将 2008 年 8 月 8 日上午 8 时向后推 10000秒的时间

例题例题例题例题

注意: + 和 - 运算符必须遵循以上规则。例如,日期 + 日期就是一个非法的表达式。

Page 58: 第二章 数据类型表达式和函数

2.2.4 逻辑型表达式

Page 59: 第二章 数据类型表达式和函数

>> 大于 << 小于 == 等于 >=>= 大于等于 <=<= 小于等于 <><> 或 !=!= 或 # # 不等于 $$ 子串包含测试 ==== 精确等于 比较两个类型相同的数据(数值型、货币型、字符型、日期型、逻辑型)是否符合关系运算符规定的关系,若符合,返回逻辑真值,否则返回逻辑假值

关系型运算符

Page 60: 第二章 数据类型表达式和函数

两个数值型数据或货币型数据比较时,按数值的大小比较。两个日期型数据比较时,越早的日期越小,越晚的日期越大。两个逻辑型数据比较时,逻辑真值 .T.大于逻辑假值 .F.。

关系型运算符

Page 61: 第二章 数据类型表达式和函数

? 12>14

&& 表达式的结果为逻辑假值 .F.

?5>=5

&& 表达式的结果为逻辑真值 .T.

>= 即大于或等于?5!=5

&& 表达式的结果为逻辑假值 .F.

例题例题

Page 62: 第二章 数据类型表达式和函数

?{^2008/5/1}>{^2008/10/1}&& 表达式的结果为 .F.&&因为 2008 年 10 月 1 日晚于 2008 年 5 月 1日,故 {^2008/10/1}大于 {^2008/5/1}?(9>8)>.F.&& 表达式的值为 .T. &&因为 9>8 的结果为逻辑真值 .T. ,大于逻辑假值 .F. 。

例题例题例题例题

Page 63: 第二章 数据类型表达式和函数

字符型数据比较时,先比较第一个字符的大小,若第一个字符大,则该串大;若第一个字符相同,则比较第二个字符,直到比较出大小

字符的比较次序

Page 64: 第二章 数据类型表达式和函数

VFP规定了 Machine机内码、 PinYin拼音、 Storke笔画三种字符的排序次序,默认为拼音次序。PinYinPinYin拼音次序拼音次序:汉字按照拼音顺序排列。西文字符中空格最小,小写 abcd字母序列排在前面,大写 ABCD字母序列排在后面。 MachineMachine机内码次序机内码次序:汉字按照国标码顺序排列;西文字符按照字符的 ASCII码值大小排列。StorkeStorke笔画次序笔画次序:无论中文西文,按笔划多少的顺序排列。

字符的比较次序

Page 65: 第二章 数据类型表达式和函数

数据选项卡工具(T)

选项(O)

字符的排序次序

Page 66: 第二章 数据类型表达式和函数

SET COLLATE TO SET COLLATE TO <排序次序名 >

次序名为“ MACHINE” 或“ PINYIN” 或“ STROKE”

字符比较次序

Page 67: 第二章 数据类型表达式和函数

SET COLLATE TO "MACHINE"&& 按机内码排序

?"acb">"abc","a"<"A","江西 ">"江苏 "&& 表达式的值为 .T..F..T.SET COLLATE TO "PINYIN"

&& 按拼音排序?"acb">"abc","a"<"A","江西 ">"江苏 "&& 表达式的值为 .T..T..T.SET COLLATE TO "STROKE"

&& 按笔画排序?"acb">"abc","a"<"A","江西 ">"江苏 "&& 表达式的值为 .T..T..F.

例题例题例题例题

Page 68: 第二章 数据类型表达式和函数

运算符 ==只能用于字符型数据的运算,当 ==两旁的字符串完全相同时,返回逻辑真值,否则返回逻辑假值。

字符型精确比较与 EXACT设置

Page 69: 第二章 数据类型表达式和函数

使用等于运算符 = 比较两个字符串时,运算结果与 SET EXACT ON|OFF设置有关。系统默认 EXACT状态为 OFF。若 = 两旁字符串的字符个数不同,则只要 = 右边字符串与 = 左边字符串的前面部分相同,结果就为 .T.。当设置 EXACT状态为 ON时,若 = 两旁字符串的字符个数不同,系统将在较少字符的字符串尾部添加空格,使两个字符串字符个数相同,再来进行比较。在“选项”对话框的“数据”选项卡,可设置 EXACT状态。

字符型精确比较与 EXACT设置

Page 70: 第二章 数据类型表达式和函数

SET EXACT OFF?"湖南长沙 "="湖南 "&& 表达式的值为 .T.?"湖南 "="湖南长沙 "

&& 表达式的值为 .F.? "湖南长沙 "=" 长沙 "&& 表达式的值为 .F.?"湖南长沙 "=="湖南 "&& 表达式的值为 .F.

例题例题例题例题

Page 71: 第二章 数据类型表达式和函数

SET EXACT ON? "湖南长沙 "="湖南 "&& 表达式的值为 .F.?"湖南 "="湖南长沙 "&& 表达式的值为 .F.?"湖南长沙 "=" 长沙 "&& 表达式的值为 .F.?"湖南长沙 "=="湖南 "&& 表达式的值为 .F.

例题例题例题例题

Page 72: 第二章 数据类型表达式和函数

运算符 $$ 用于字符型数据的运算。若 $ 左边的字符串包含在 $ 右边的字符串中,即左边字符串是右边字符串的子串,则返回逻辑真值,否则返回逻辑假值。

包含运算符 $

Page 73: 第二章 数据类型表达式和函数

?"is"$"This","This"$"is"&& 表达式的值为 .T..F.? "Is"$"This"&& 表达式的值为 .F. ,大小写的英文字母不相等? "Ts"$"This "&& 表达式的值为 .F.$左边的字符串必须完整连续地被包含在 $右边的字符串中,才返回逻辑真值。

例题例题例题例题

Page 74: 第二章 数据类型表达式和函数

NOTNOT 或 ! ! 逻辑非AND AND 逻辑与OR OR 逻辑或

优先级

逻辑型运算符

Page 75: 第二章 数据类型表达式和函数

X Y X AND Y X OR Y NOT X.F. .F. .F. .F. .T..F. .T. .F. .T..T. .F. .F. .T. .F..T. .T. .T. .T.

逻辑型运算符

Page 76: 第二章 数据类型表达式和函数

对于逻辑与 AND, 当连接的两个逻辑型数据均为真值时,结果才为真值;对与逻辑或 OR, 当连接的两个逻辑型数据均为假值时,结果才为假值。

逻辑型运算符

注意:逻辑运算符的前后必须有圆点或空格与其他数据分开。

Page 77: 第二章 数据类型表达式和函数

当编写条件时,应写出正确的逻辑表达式

书写判断数值型变量 x 是否大于 3 且小于 10 的条件x>3 and x<10&& 不能写为 10>x>3,因为关系运算只能比较相同数据类型的数据

书写判断字符型变量身份是否等于工作人员或教研人员的条件身份 =" 工作人员 " OR 身份 ="教研人员 "&& 不能写成 身份 =“工作人员” OR “教研人员”,因为逻辑运算符只能连接逻辑型的数据

书写判断性别为女的身份为工作人员或教研人员的条件性别 =" 女 " AND ( 身份 =" 工作人员 " OR 身份 ="教研人员 ")&& 因为 AND 的优先级高于 OR ,所以要加上括号

例题例题例题例题

Page 78: 第二章 数据类型表达式和函数

? NOT (2+3=6)

NOT(5=6)

.NOT F.

T.

运算符优先级

Page 79: 第二章 数据类型表达式和函数

关系

逻辑

运算符优先级

括号

数值、货币、字符、日期

Page 80: 第二章 数据类型表达式和函数

? NOT (7>6) AND ‘ABV’>’ABC’ OR 5*2=8

NOT(.T.) AND ‘ABV’>’ABC’ OR 5*2=8

NOT(.T.) AND ‘ABV’>’ABC’ OR 10=8

NOT(.T.) AND .T. OR .F.

.F. AND .T. OR .F.

.F. OR .F.

.F.

例题例题例题例题

Page 81: 第二章 数据类型表达式和函数

2.3 2.3 常用函数常用函数

Page 82: 第二章 数据类型表达式和函数

VFP 提供 200 余种内置函数,实现数据的运算或转换功能。每个函数有固定的名称,后面加一对圆括号,括号内有若干个自变量。根据系统对函数功能的定义,函数将返回一个值,称为函数值。

函数

SQRT(9)

函数名

自变量

函数值为 3

Page 83: 第二章 数据类型表达式和函数

2.3.1 数值函数

Page 84: 第二章 数据类型表达式和函数

ABS ABS ( ( < 数值表达式 > ))

返回指定数值表达式的绝对值

绝对值函数

Page 85: 第二章 数据类型表达式和函数

? abs(-20), abs(0), abs(20)

&& 函数值为 20 , 0 , 20

例题例题例题例题

Page 86: 第二章 数据类型表达式和函数

SIGNSIGN ( ( < 数值表达式 > ))

当 < 数值表达式 > 的值分别为正数、 0 、负数时,函数值分别为 1 、 0 、 -1 。

符号函数

Page 87: 第二章 数据类型表达式和函数

? sign(-20), sign(0), sign(20)

&& 函数值为 -1 , 0 , 1

例题例题例题例题

Page 88: 第二章 数据类型表达式和函数

MOD MOD ( ( < 数值表达式 1>, < 数值表达式 2>

))函数值为 < 数值表达式 1> 除以 < 数值表达式2> 的余数,函数值的正负号与 < 数值表达式 2>

相同。

求余数函数

Page 89: 第二章 数据类型表达式和函数

? mod(20,3) ,mod(20,-3), mod(-20,3) ,mod(-20,-3)

&& 函数值为 2,-1,1,-2

例题例题例题例题

Page 90: 第二章 数据类型表达式和函数

INT INT ( ( < 数值表达式 >

))返回数值表达式的整数部分

CEILINGCEILING ( ( < 数值表达式 > ))

返回大于或等于数值表达式的最小整数

FLOORFLOOR ( ( < 数值表达式 > ))

返回小于或等于数值表达式的最大整数

求整数函数

Page 91: 第二章 数据类型表达式和函数

STORE 5.8 TO X

?INT(X),INT(-X)

5 -5

?CEILING(X),CEILING(-X)

6 -5

?FLOOR(X),FLOOR(-X)

5 -6

例题例题例题例题

Page 92: 第二章 数据类型表达式和函数

ROUND ROUND ( ( < 数值表达式 1>, < 数值表达式2> ))返回数值表达式 1 在数值表达式 2 指定位置四舍五入后的结果若数值表达式 2大于等于 0 ,指要保留的小数位数若数值表达式 2小于 0 ,对整数部分四舍五入

四舍五入函数

Page 93: 第二章 数据类型表达式和函数

? round(123.4567,2)

&& 函数值为 123.46

? round((123.4567,0)

&& 函数值为 123

? round((123.4567,-2)

&& 函数值为 100

例题例题例题例题

Page 94: 第二章 数据类型表达式和函数

SQRT SQRT ( ( < 数值表达式 > ))

返回指定数值表达式的平方根数值表达式的值不能为负

求平方根函数

Page 95: 第二章 数据类型表达式和函数

EXP EXP ( ( < 数值表达式 > ))

函数值为以 e 为底数,以 < 数值表达式 > 为指数的值。

指数函数

Page 96: 第二章 数据类型表达式和函数

LOG LOG ( ( < 数值表达式 > ))

函数值为 < 数值表达式 > 的自然对数值。

自然对数函数

Page 97: 第二章 数据类型表达式和函数

?exp(3),log(148.51)

&& 函数值为 20.09 , 5

例题例题例题例题

Page 98: 第二章 数据类型表达式和函数

RAND RAND ( )( )

函数值为一个 0 到 1 之间的随机数。

随机数函数

Page 99: 第二章 数据类型表达式和函数

MAX ( MAX ( < 表达式 1>, < 表达式 2> [, < 表达式 3>…

))返回各表达式的最大值

MIN ( MIN ( < 表达式 1>, < 表达式 2> [, < 表达式3>… ) )返回各表达式的最小值

表达式的类型可以是数值型、字符型、货币型、日期型、日期时间型,但所有表达式类型必须相同

求最大值最小值函数

Page 100: 第二章 数据类型表达式和函数

? max(5^3,5*3,53)

&& 函数值为 125

?min(5^3,5*3,53)

&& 函数值为 15? max(' 中国 ',' 美国 ',' 日本 '),max({^2006-10-1},{^2008-

1-1})&& 函数值为中国, 1/1/08

例题例题例题例题

Page 101: 第二章 数据类型表达式和函数

PI PI ( )( )

返回圆周率该函数无参数

圆周率函数

Page 102: 第二章 数据类型表达式和函数

2.3.2 字符串处理函数

Page 103: 第二章 数据类型表达式和函数

TRIM TRIM ( ( < 字符表达式 > ))

返回字符表达式值去掉前导空格后形成的字符串

ALLTRIM ALLTRIM ( ( < 字符表达式 > ))

返回字符表达式值去掉前导和尾部空格后形成的字符串

LTRIM LTRIM ( ( < 字符表达式 > ))返回字符表达式值去掉尾部空格后形成的字符串

删除前后空格函数

Page 104: 第二章 数据类型表达式和函数

s=" 湖南 "?alltrim(s)+" 长沙“&& 表达式值为湖南长沙? ltrim(s)+" 长沙“&& 表达式值为 湖南 长沙?trim(s)+" 长沙“&& 表达式值为 湖南长沙

例题例题例题例题

Page 105: 第二章 数据类型表达式和函数

SPACE SPACE ( ( < 数值表达式 > ))

返回由指定数目的空格组成的字符串

空格字符串生成函数

Page 106: 第二章 数据类型表达式和函数

LEN LEN ( ( < 字符表达式 > ))

函数值为 < 字符表达式 > 的长度,即包含的字符个数。其中,一个 ASCII 字符长度为 1 ,一个汉字长度为 2 。

字符串长度函数

Page 107: 第二章 数据类型表达式和函数

x=space(1)+"HUNAN"+space(2)+ "湖南 "+space(3)?len(x)&& 表达式值为 15?len(alltrim(x))&& 表达式值为 11?len(ltrim(x))&& 表达式值为 14?len(trim(x))&& 表达式值为 12

例题例题例题例题

Page 108: 第二章 数据类型表达式和函数

LOWER LOWER ( ( < 字符表达式 > ))

将字符表达式值中的大写字母转换成小写字母,其他字符不变

UPPER UPPER ( ( < 字符表达式 > ))

将字符表达式值中的小写字母转换成大写字母,其他字符不变

大小写转换函数

Page 109: 第二章 数据类型表达式和函数

?upper("China 中国 ")&& 函数值为 CHINA 中国 ?lower("China 中国 ")&& 函数值为 china 中国

例题例题例题例题

Page 110: 第二章 数据类型表达式和函数

LEFT LEFT ( ( < 字符表达式 >, < 长度 >

))

返回字符表达式值的右端取指定长度的子串

SUBSTR SUBSTR ( ( < 字符表达式 > , < 起始位置 >[,< 长度>] ))返回字符表达式值从起始位置取指定长度的子串若缺省长度,则从起始位置取到最后一个字符

RIGHTRIGHT ( ( < 字符表达式 > , < 长度> ))

返回字符表达式值的左端取指定长度的子串

取子串函数

Page 111: 第二章 数据类型表达式和函数

y=“CHINA 中国”?left(y,5)

&& 函数值为 CHINA

? right(y,4)

&& 函数值为中国?substr(y,6,2)

&& 函数值为中? substr(y,6)

&& 中国

例题例题例题例题

Page 112: 第二章 数据类型表达式和函数

AT ( AT ( < 字符表达式 1>, < 字符表达式 2>[, < 次数 >] ) )

若第一个字符串是第二个字符串的子串,返回第一个字符串的首字符在第二个字符串中的位置若不是子串,则返回 0

若指定 < 次数 > ,则函数值为 < 字符表达式 1> 在< 字符表达式 2> 中按指定 < 次数 >出现的位置。 <

次数 >缺省时,默认值为 1 。 该函数区分大小写字母。

求子串位置函数

Page 113: 第二章 数据类型表达式和函数

ATC ( ATC ( < 字符表达式 1>, < 字符表达式 2>[, < 次数 >]

))

该函数功能与 AT 相同,但比较字符表达式时不区分字母大小写。

求子串位置函数

Page 114: 第二章 数据类型表达式和函数

store "This is Visual Foxpro" TO z?at("Fox",z) && 函数值为 16? at("fox",z)&& 函数值为 0?atc("fox",z) && 函数值为 16

?at("is",z,3) && 函数值为 10

例题例题例题例题

Page 115: 第二章 数据类型表达式和函数

OCCURS OCCURS ( ( < 字符表达式 1>, < 字符表达式 2>

))返回第一个字符串在第二个字符串中出现的次数,函数值为数值型若第一个字符串不是第二个字符串的子串,函数值为 0

计算子串出现次数函数

Page 116: 第二章 数据类型表达式和函数

m=" 湖南长沙湖南大学 "?occurs(" 湖南 ",m)&& 函数值为 2?occurs(" 长沙 ",m)&& 函数值为 1?occurs(" 长沙大学 ",m) && 函数值为 0

例题例题例题例题

Page 117: 第二章 数据类型表达式和函数

REPLICATEREPLICATE ( ( < 字符表达式 > , < 数值表达式> ))函数值为一个字符串,将 < 字符表达式

>重复 < 数值表达式 > 所指定的次数。

产生重复字符的字符串函数

Page 118: 第二章 数据类型表达式和函数

?replicate("HUNAN",2)+replicate(" 湖南 ",3)&& 表达式的值为 HUNANHUNAN 湖南湖南湖南

例题例题例题例题

Page 119: 第二章 数据类型表达式和函数

STUFF( STUFF( < 字符表达式 1>, < 起始位置 >, < 长度 >, < 字符表达式 2>))用 < 字符表达式 2> 值替换 < 字符表达式 1> 中由

起始位置和长度指明的一个子串。如果长度值是 0 , < 字符表达式 2>则插在由 <

起始位置 > 指定的字符前面。如果 < 字符表达式 2> 是空串,那么 < 字符表达式 1> 中的由起始位置和长度指明的子串被删去

子串替换函数

Page 120: 第二章 数据类型表达式和函数

n=" 长沙湖南大学 " ?stuff(n,5,4," 中南林业 ")&& 函数的值为长沙中南林业大学?stuff(n,5,0," 岳麓山 ")&& 函数的值为长沙岳麓山湖南大学? stuff(n,5,4,"")&& 函数的值为长沙大学

例题例题例题例题

Page 121: 第二章 数据类型表达式和函数

CHRTRAN ( CHRTRAN ( < 字符表达式 1>, < 字符表达式 2> , < 字符表达式3>))函数值为字符串,当 < 字符表达式 1>的一个或

多个字符与 < 字符表达式 2>中的某个字符相匹配时,就用 < 字符表达式 3>中相同位置的字符替换这些字符。若在 < 字符表达式 2>中与 < 字符表达式 1>相配的字符,在 < 字符表达式 3>的相同位置上没有字符,则此字符将被删除。

字符替换函数

Page 122: 第二章 数据类型表达式和函数

?chrtran("124124","123","abc")

&& 函数的值为 ab4ab4

?chrtran("124124","12","a")

&& 函数的值为 a4a4

例题例题例题例题

Page 123: 第二章 数据类型表达式和函数

LIKE LIKE ( ( < 字符表达式 1>, < 字符表达式 2> ))

比较两个字符串上对应位置上的字符,若所有对应字符都想匹配,函数返回逻辑真,否则返回逻辑假< 字符表达式 1> 可以包含通配符 * 和 ? 。 *

可匹配任意数目的字符, ? 匹配任何单个字符。

字符串匹配函数

Page 124: 第二章 数据类型表达式和函数

?like(" 王 *"," 王颖珊 ")

&& 函数的值为 .T.

?like(" 王 ?"," 王颖珊 ")

&& 函数的值为 .F.

?like(" 王颖珊 "," 王 *")

&& 函数的值为 .F.

例题例题例题例题

Page 125: 第二章 数据类型表达式和函数

ASC ASC ( ( < 字符表达式 > ))

函数值为字符表达式中第一个字符的机内码。若是 ASC 字符,返回 ASC 码;若是中文字符,返回汉字机内码。

求字符的编码函数

Page 126: 第二章 数据类型表达式和函数

CHR CHR ( ( < 数值表达式 > ))

函数值为一个字符。(< 数值表达式 > 是 ASC 码,返回 ASC 字符;若是汉字机内码,返回汉字。

求编码对应的字符函数

Page 127: 第二章 数据类型表达式和函数

?asc(“A”)&& 函数的值为 65?asc(“ 中国” ) && 函数的值为 54992 (汉字“中”的机内码)?chr(65+4)&& 函数的值为 E?chr(54992) && 函数的值为中

例题例题例题例题

Page 128: 第二章 数据类型表达式和函数

2.3.3 日期和时间处理函数

Page 129: 第二章 数据类型表达式和函数

DATE DATE ( )( )返回当前系统日期,函数值为日期型

TIME TIME ( )( )以 24小时制 HH:MM:SS 格式返回当前系统时间,函数值为字符型

DATETIME DATETIME ( )( )返回当前系统日期时间,函数值为日期时间型

系统日期和时间函数

Page 130: 第二章 数据类型表达式和函数

从日期或日期时间返回年份(四位整数)YEAR YEAR ( ( < 日期表达式 >| < 日期时间表达式 >

))

从日期或日期时间返回月份

MONTH MONTH ( ( < 日期表达式 >| < 日期时间表达式> ))

从日期或日期时间返回日号DAY DAY ( ( < 日期表达式 >| < 日期时间表达式 > ))

求年份、月份和天数函数

CMONTH CMONTH ( ( < 日期表达式 >| < 日期时间表达式 >

))从日期或日期时间返回月份的英文单词

Page 131: 第二章 数据类型表达式和函数

d={^2008-10-1}

?year(d)

&& 函数的值为 2008

?month(d)

&& 函数的值为 10

?cmonth(d)

&& 函数的值为 October

?day(d)

&& 函数的值为 1

例题例题例题例题

Page 132: 第二章 数据类型表达式和函数

函数值为 1 到 7 中的一个整数,表示 < 日期表达式 > 或 < 日期时间表达式 > 是一星期中的第几天。函数值 1 表示星期日, 2 表示星期一……。

DOW DOW ( ( < 日期表达式 >| < 日期时间表达式 >

))

求星期几函数

CDOW CDOW ( ( < 日期表达式 >| < 日期时间表达式 >

))函数值为 < 日期表达式 > 或 < 日期时间表达式 > 是星期几的英文单词。

Page 133: 第二章 数据类型表达式和函数

函数值为 < 日期表达式 > 或 < 日期时间表达式> 是当年的第几周。

WEEK WEEK ( ( < 日期表达式 >| < 日期时间表达式 >

))

星期函数

Page 134: 第二章 数据类型表达式和函数

d={^2008-10-1}

?dow(d)

&& 函数的值为 4

?cdow(d)

&& 函数的值为 Wednesday

?week(d)

&& 函数的值为 40

例题例题例题例题

Page 135: 第二章 数据类型表达式和函数

从日期时间中返回小时部分( 24小时制)

HOUR HOUR (( < 日期时间表达式 > ))

从日期时间中返回分钟部分

MINUTE MINUTE (( < 日期时间表达式 > ))

从日期时间中返回秒数部分

SEC SEC ( ( < 日期时间表达式 > ))

求时、分和秒函数

Page 136: 第二章 数据类型表达式和函数

t={^2008-10-1 7:30 p}

?hour(t)

&& 函数的值为 19

?minute(t)

&& 函数的值为 30

?sec(t)

&& 函数的值为 0

例题例题例题例题

Page 137: 第二章 数据类型表达式和函数

将某一种类型的数据转换成另一种类型

2.3.4 数据类型转换函数

Page 138: 第二章 数据类型表达式和函数

STR STR (( < 数值表达式 >[,< 长度 >[,< 小数位数>]] ))将数值表达式转换为字符串,根据需要四舍五入。设数值表达式的整数部分位数加上小数点所占 1 位加上小数位数的长度为 L若 < 长度 >大于 L,则字符串加前导空格以满足长度 ;若长度小于 L而大于整数部分位数 ( 包括负号 ) ,则优先满足整数部分而调整小数部分 ;若长度小于整数部分位数 ,则返回星号长度的默认部分为 10,小数部分的默认值为 0

数值转换成字符串

Page 139: 第二章 数据类型表达式和函数

n=-100.687?"n="+str(n,8,2) && 表达式为 n= -100.69, 前面加上了 1 个空

格?str(n,7,2)&& 函数的值为 -100.69?str(n,6,2)&& 函数的值为 -100.7?str(n,3)&& 函数的值为 ***?str(n,5)&& 函数的值为 -101?str(n)&& 函数的值为 -101

例题例题例题例题

Page 140: 第二章 数据类型表达式和函数

VAL VAL (( < 字符表达式 > ))

函数值为 < 字符表达式 > 所转换的数值型数据。若字符表达式的第一个字符不是数字符号,则函数值为零。若字符表达式以数字字符开头,但出现了非数字字符,则函数值为只转换前面数字字符的部分。函数值只保留两位小数,其余小数四舍五入。

字符串转换成数值

Page 141: 第二章 数据类型表达式和函数

?val('12'+'345')

&& 函数的值为 12345.00

?val('12a345')

&& 函数的值为 12.00

?val('a12345')

&& 函数的值为 0

例题例题例题例题

Page 142: 第二章 数据类型表达式和函数

CTOD CTOD (( < 字符表达式 > ))

将字符型表达式的值转换为日期型数据

CTOT CTOT (( < 字符表达式 > ))

将字符型表达式的值转换为日期时间型数据

字符串转换成日期或日期时间

注意:字符表达式的日期部分格式需与 SET DATE TO 格式一致

Page 143: 第二章 数据类型表达式和函数

set date to ymd

set cent on

?ctod("2008/10/01")

&& 函数的值为 2008/10/01( 日期型 )

?ctot("08/10/01 14:30")

&& 函数的值为 2008/10/01 02:30:00 PM( 日期时间型 )

例题例题例题例题

Page 144: 第二章 数据类型表达式和函数

DTOC DTOC (( < 日期表达式 [,1] ))

将日期型数据转换为字符串 .如果使用了参数 1 ,则字符串的格式固定的为YYYYMMDD 。否则,字符串的日期格式与 SET DATE TO 语句的设置和 SET CENTURY ON 语句的设置有关。

日期转换成字符串

Page 145: 第二章 数据类型表达式和函数

TTOC TTOC (( < 日期时间表达式 > [,1] ))

将日期时间型数据转换为字符串 .

如果有参数 1 ,则字符串的格式固定的为YYYYMMDDHHMMSS 。否则,字符串的日期格式与 SET 语句的设置有关。

日期或日期时间转换成字符串

Page 146: 第二章 数据类型表达式和函数

t={^2008-10-1 2:30 p}

set date to mdy

&& 设置日期格式为月日年set century off

&& 设置显示 2 位年份?dtoc(t),dtoc(t,1)

&& 函数的值为 10/01/08 , 20081001

?ttoc(t),ttoc(t,1)

&& 函数的值为 10/01/08 02:30 pm , 20081001143000

例题例题例题例题

Page 147: 第二章 数据类型表达式和函数

& & < 字符型变量 >[.]

替换出字符型变量的内容。由于该函数没有圆括号,如果该函数与后面字符没有分界,需要用“ .” 作函数结束标志。

宏替换函数

Page 148: 第二章 数据类型表达式和函数

X='Y'

Y=10

?X,&X

&& 表达式的值为 Y,10

例题例题例题例题

Page 149: 第二章 数据类型表达式和函数

帮助用户了解操作对象的状态

2.3.5 测试函数

Page 150: 第二章 数据类型表达式和函数

BETWEEN (BETWEEN ( < 表达式 1>, < 表达式 2> , < 表达式 3

> ))判断 < 表达式 1> 的值是否介于 < 表达式 2> 和 < 表达式 3>之间。当 < 表达式 1> 的值大于等于 < 表达式 2> 的值并且小于等于 < 表达式 3> 的值,函数值为逻辑真 .T. ;否则函数值为逻辑假 .F. 。函数的自变量可是数值、字符、日期等多种类型,但三个表达式的类型需一致

值域测试函数

Page 151: 第二章 数据类型表达式和函数

price=10.7

?between(price,0,100)

&& 函数的值为 .T.

?between({^2008-5-1},{^2008-1-1},{^2008-1-1}+100)

&& 函数的值为 .F.

例题例题例题例题

Page 152: 第二章 数据类型表达式和函数

ISNULL(ISNULL( < 表达式 > ))

判断一个表达式的值是否为 NULL 值,若是则返回逻辑值真 (.T.) ,否则返回逻辑值假(.F.)

空值 (NULL) 是 VFP 中一种特殊的常量,表示数据为空值。

空值 (NULL值 ) 测试函数

Page 153: 第二章 数据类型表达式和函数

EMPTY(EMPTY( < 表达式 > ))

根据指定表达式的运算结果是否为“空”值,若是则返回逻辑值真 (.T.) ,否则返回逻辑值假(.F.)

空值不等于 NULL 值表达式的类型可以是字符、数值、日期等多种类型,不同类型的空值有不同的定义

“空”值测试函数

Page 154: 第二章 数据类型表达式和函数

数据类型 空值 数据类型 空值

数值型 0 双精度型 0

字符型 空串空格制表符回车符换行符

日期型 空

货币型 0 日期时间 空

浮点型 0 逻辑型 .F.

整形 0 备注字段 空

“空”值测试函数

Page 155: 第二章 数据类型表达式和函数

x=.NULL.y=0?x,isnull(x)&& 表达式为 .NULL. , .T.?empty(x)&& 表达式为 .F.? isnull(y)&& 表达式为 .F.?empty(y)&& 表达式为 .T.

例题例题例题例题

Page 156: 第二章 数据类型表达式和函数

VAREYPE(VAREYPE( < 表达式 >[,< 逻辑表达式>] ))测试表达式的类型,返回一个大写字母若表达式是一个数组,则根据第一个数组元数的类型若表达式的值是 NULL, 若逻辑表达式的值为 .F.

或缺省 ,则返回 X 。若逻辑表达式的值为 .T.,则返回表达式的原数据类型。

数据类型测试函数

Page 157: 第二章 数据类型表达式和函数

返回值 数据类型 返回值 数据类型

C 字符型备注型 G 通用型

N 数值型整型浮点型双精度型

D 日期型

Y 货币型 T 日期时间型

L 逻辑型 X NULL 值

O 对象型 U 未定义

数据类型测试函数

Page 158: 第二章 数据类型表达式和函数

m='10/1/2008‘?vartype(m) ?&& 表达式为 Cvartype(val(m)) ?&& 表达式为 Nvartype(ctod(m)) && 表达式为 Dm=.null.?vartype(m) ? && 表达式为 X vartype(m,.t.) && 表达式为 C

例题例题例题例题

Page 159: 第二章 数据类型表达式和函数

IIF(IIF( < 逻辑表达式 >,< 表达式 1> , < 表达式2> ))

测试逻辑表达式的值。当 < 逻辑表达式 > 的结果为真,函数值为 < 表达式 1> 的值,否则函数值为 < 表达式 2> 的值。表达式 1 和表达式 2 的类型可以不相同。IIF 函数可以嵌套使用。

条件测试函数

Page 160: 第二章 数据类型表达式和函数

CJ=80

?IIF(CJ<60," 不及格 "," 及格 ")

&& 表达式为及格?IIF(CJ<60," 不及格 ",IIF(CJ<80," 及格 "," 良

好 ")) && 表达式为良好

例题例题例题例题

Page 161: 第二章 数据类型表达式和函数

作业

教材 p42 一、 p43 二(书 ) 、 p44三(书)试验指导 p3 试验内容(作业本)