Visual Foxpro 9.0数据库程序设计教程
上QQ阅读APP看书,第一时间看更新

3.2 表达式的应用

表达式是指用括号和运算符把常量、变量以及函数连接而成的式子,单个的常数、变量、函数是一种特殊的表达式,表达式具有计算、判断和数据类型转换等作用。表达式通过计算均能得到一个结果,称为表达式的值。表达式所用到的运算符分为数值型、字符型、日期型、关系型和逻辑型等,因而就有相应的数值表达式、字符串表达式、日期表达式、关系表达式和逻辑表达式。

1.数值、字符与日期时间表达式

(1)数值型表达式

数值型表达式是由数值运算符将数值常量、变量、字段或函数连接起来构成的式子,运算结果为数值型。常见的算术运算符按优先级排列,如表3-1所示。

表3-1 数值运算符

【例3】计算表达式50-(2**5/8+3)*2的值。

在命令窗口输入:

?50-(2**5/8+3)*2

屏幕显示结果为:

36

【例4】a=7,b=5,计算表达式(a+b)/(a-b)的值。

在命令窗口输入:

a=7

b=5

?(a+b)/(a-b)

屏幕显示结果为:

6.0000

(2)字符表达式

字符表达式由字符型常量、变量、函数和字符运算符组成,其运算结果仍为字符型。字符运算符主要有两类:连接运算和包含运算。

连接运算有完全连接和不完全连接两种,分别使用运算符“+”和“-”,如表3-2所示。

表3-2 字符运算符

包含运算本应归于关系运算类,由于它是字符串之间特有的关系运算,故将其放在字符表达式中介绍,包含运算的结果不再是字符型而是逻辑型。

格式:字符串1$字符串2

功能:如果字符串1包含在字符串2中,则表达式的值为.T.,否则为.F.。

【例5】字符表达式的应用。

在命令窗口输入:

?"青少年"+"儿童"

屏幕显示结果为:

青少年儿童

在命令窗口输入:

?"青少年"-"儿童"

屏幕显示结果为:

青少年儿童

在命令窗口输入:

?" street "$"sterrr"

屏幕显示结果为:

.F.

在命令窗口输入:

?"street"$" streets"

屏幕显示结果为:

.T.

注意:以上所有运算符与操作数组成的表达式中,操作数必须是同类型的数据。

(3)日期时间表达式

日期型表达式由日期型或数值型常量、变量、函数和日期运算符“+”、“-”组成,其运算结果为日期型或数值型,如表3-3所示。

“+”运算符:如果日期值+数值表示日期值加天数,日期值+日期型无意义。

“-”运算符:如果日期值-数值表示日期值减天数,日期型-日期型表示两日期相距的天数。

表3-3 日期时间运算符

【例6】日期时间表达式的应用。

在命令窗口输入:

?{^2015-06-10}+10

屏幕显示结果为:

06/20/15

在命令窗口输入:

?{^2015-06-10}-10

屏幕显示结果为:

05/31/15

在命令窗口输入:

?{^2015-06-10}-{^2014-06-10}

屏幕显示结果为:

365

在命令窗口输入:

?{^2015-06-10}+{^2014-06-10}

屏幕显示结果为:

“操作符/操作数类型不匹配”的错误信息。

2.关系表达式

关系运算符是对两个数据进行比较操作的一种符号,如表3-4所示,关系运算的结果一定是逻辑值。

表3-4 关系运算符

在关系表达式运算时,就是比较同类两数据对象的“大小”,对于不同类型的数据,其“大小”或是值的大小,或是先后顺序。日期或日期时间数据则以日期或时间的先后顺序为序。默认规则为:

①单个字符:是以字符ASCII码的大小作为字符的“大小”,也就是有先后顺序。

②字符串:从左到右逐个字符进行比较,但因系统相关设置状态不同,比较的结果与预期的不完全相同。

③汉字:系统默认按汉字的拼音排序汉字的顺序,因此汉字的比较实质上是以字母的顺序进行比较。在Visual FoxPro系统中可以设置汉字按笔画排列顺序,因而,汉字也可以对笔画数的多少进行“大小”比较。

【例7】日期时间表达式的应用。

在命令窗口输入:?7*7>25

屏幕显示结果为:.T.

在命令窗口输入: ?"abcde"<"abc"

屏幕显示结果为:.F.

在命令窗口输入: ?"abcde"="abc"

屏幕显示结果为:.F.

在命令窗口输入:?"AB"$"XABY"

屏幕显示结果为:.T.

3.逻辑表达式

逻辑表达式由逻辑运算符和逻辑常量、变量、函数及关系表达式组成,其结果仍是逻辑值。

逻辑运算符按其运算优先级有NOT或!(非)、AND(与)、OR(或)。

①使用.NOT.运算的表达式为假,则逻辑表达式的值为真。

②使用.AND.连接的两个表达式的值同时为真,则其值为真,其余都为假。

③使用.OR.连接的两个表达式的值,只要有一个为真,其值就为真。

【例8】逻辑表达式比较。

在命令窗口输入:?NOT(70 >124)

屏幕显示结果为: .T.

在命令窗口输入:?not(70<124)and(40<50)

屏幕显示结果为:.T.

在命令窗口输入:?not(70<124)or(40=50)

屏幕显示结果为: .T .

4.运算符优先级

不同类型的运算符有可能出现在同一个表达式中。运算过程中,括号的优先级最高,其余各类运算符的优先级别由高到低依次为:

①数值运算(其中%运算与/、*同级别)、字符串运算和日期运算。

②关系运算。

③逻辑运算。