第二章 VFP的数据表达式
一、数据类型
1.字符型
字符型(Character,C型)通常用于储存文本信息,由字母、汉字、空格、数字、符号和标点等字符组成,宽度不能超过254字节。
若超过254字节,则请改用备注型。
例如:“abc”,“计算机”,“123”,“ID18”等。
2.货币型
货币型(Currency,Y型)这种类型是专为货币数据设计的数据类型,表示方法是在数字前加一个$符号。
最多只能保留到小数点后4位,超过四位则会自动四舍五入:少于四位则会自动补零。
占8个字节的空间。
例如:money=$980.45678。
3.数值型
数值型(Numeric,N型)用于表示数量,由数字0~9、+或-,以及小数点组成。
数值型数据占8个字节,长度为1~20个字节。
VFP中文版采用十进制和十六进制两种格式。
例如:98.66,0xff(前面加0x表示十六进制)。
数值型数据可采用科学计数法,如“3E2”代表“3×102”,“10e-2”代表“10×10-2”。
4.整型
整型(Integer,I型)用于存储不含小数部分的数值。
是一种较小的数据类型,整数型占有内存空间4个字节。
5.浮点型
浮点型(Float,F型)等价于数值型类型。
VFP出于兼容性的考虑设置了这个数据类型。
6.日期型日期型(Date,D型)用于存储日期数据。
由年、月、日三部分组成,存储格式为“YYYYMMDD”。
表示范围为{^0001/01/01}到{^9999/12/31},即公元0001年1月1日到公元9999年12月31日。
其中“^”符号表示此日期格式严格遵循YMD(year,month,day)的格式,使用日期型数据时应用大括号{}括起来。
日期型数据存储长度为8个字节。
例如:mydate={^2006/10/12}表示日期是2006年10月12日,而不是2006年12月10日。
7.时间日期型
时间日期型(Date Time,T型)用于记录日期时间的数据。
由日期数据加具体时间构成,存储格式为“YYYYMMDDHHMMSS”。
其中时间部分的取值为:00:00:00a到11:59:59p之间。
例如:mydatetime={^2006/12/14 10:30:05p} 。
8.双精度型
双精度型(Double,B型)常用来记录高精度的数据。
9.逻辑型
逻辑型(Logical,L型)用于存储只有两个值的数据,即逻辑真T(t)或Y(y)和逻辑假F(f)或N(n)。
10.通用型
通用型(General,G型)是一种用于OLE(对象的链接与嵌入)存储对象(字处理文档、电子表格、图片、声音等)的数据类型。
这些OLE对象是用其他应用程序建立的,该类型的长度固定为4个字节。
11.备注型
备注型(Memo,M型)在字段名长度上和通用型一样,在表中占4个字节,实际的备注内容以后缀名.fpt的独立文件存储。
需要指出的是,因为备注型数据只用于表中,所以内存中不存在备注型的变量和数组元素。
二、常量
在程序运行过程中取值不能改变的量称为常量,
有以下6种数据类型:数值型常量、字符型常量、日期型常量、日期时间型常量、逻辑型常量、货币型常量。
三、变量
1、内存变量
内存变量是用户通过命令或程序在内存中开辟的一块存储区域,可用来存储数据。
定义内存变量时需为其取名并赋初值,这个变量才可以使用,否则,系统会提示:找不到变量。
(1).内存变量的命名规则
内存变量名是以字母(汉字或下划线)为开头;由字母、数字、下划线组成;至多128个字符;不可与系统保留字同名。
所谓系统的保留字是VFP语言使用的命令名、参数等,如USE、LIST就是系统保留字。
(2).内存变量的赋值命令
格式1:<内存变量>=<表达式>
格式2:STORE <表达式> TO <内存变量表>
功能:定义内存变量,计算表达式的值,赋值给内存变量。
说明:内存变量的类型由所提供的值的数据类型所决定。
STORE命令的<内存变量表>可包括多个内存变量,但须用逗号来分隔。
该命令可将同一值赋给多个变量,而“=”命令仅可为一个内存变量赋值。
例:xm='王洪'
store 0 to a,b
(3).输出内存变量
? <表达式>:在新的一行打印输出<表达式>。
?? <表达式>:在当前行打印输出<表达式>。
(4).内存变量的显示
DISPLAY | LIST MEMORY [LIKE <带通配符内存变量>]
功能:显示内存变量的当前信息,包括变量名、作用域、数据类型和变量存储值。
的作用:分屏显示内存变量;
的作用:一次显示内存变量。
(5).内存变量的清除
格式1:CLEAR MEMORY
格式2:RELEASE <内存变量名表>
功能:清除内存变量,释放内存空间。
2、字段变量
字段变量是在数据库中定义的变量,每一个字段名都是一个字段变量。
字段变量是永久变量,也是一种多值变量,它的值因记录而异。
内存变量与字段变量的区别:
当内存变量和字段变量同名时,默认为字段变量,如想指明为内存变量,须在内存变量名前加M.或M->(由减号和大于号组成),即M.<内存变量>或M-><内存变量>。
3、数组
数组是按一定顺序排列的一组内存变量,是具有相同名称而下标不同的一组有序内存变量,数组中的各个变量称为数组元素。
数组使用前需要先定义。
在VFP中,一个数组中的数据不必是同一种数据类型。
常用的有一维数组,二维数组。
数组的定义:
DIMENSION | DECLARE | PUBLIC <数组名1>(<下标1>[,<下标2>])[,<数组名2>(<下标1>[,<下标2>])]…功能:定义一维或二维数组,及其下标的上界。
系统规定下标的下界为1。
说明:用DECLARE或DIMENSION定义私有数组;用PUBLIC命定义全局数组。
4、系统内存变量
系统内存变量是下划线起头的内存变量,是系统内部提供的特有变量。
四、表达式
带两个操作数的运算符称为双目运算符,带一个操作数的称为单目运算符。
1、数值型表达式(算术表达式)
2、字符型表达式
3、日期型表达式
日期型运算符
日期时间型运算符
4、关系型表达式
关系型表达式是由两个同类型的表达式用关系运算符连接起来的式子。
其运算结果为逻辑值真(.T.)或假(.F.)。
运算符优先级:级别相同,运算顺序从左到右。
5、逻辑型表达式
逻辑型表达式由逻辑型常量、变量、函数、关系表达式和逻辑运算符构成。
其结果为逻辑值。
逻辑运算符有:逻辑非“.NOT.”(单目运算符)、逻辑与“.AND.”和逻辑或“.OR.”。
逻辑型运算符
逻辑型运算规则
5、运算符的优先级
算术运算符/字符串运算符/日期运算符→关系运算符→逻辑运算符。
五、函数
函数有函数名、参数、函数值三大要素:
第一,函数名起标识作用。
第二,参数是自变量,一般是表达式,写在括号里。
有的函数没有参数,称“哑参数”。
如DATE()。
第三,函数运算会返回一个函数值,称为函数值,函数值会因参数而异。
1、数值函数
2、字符函数
3、日期和时间函数
4、数据类型转换函数。