
4.3.1 运算符
1.算术运算符
算术运算符的操作数是数值型的数据,如果是字段的话,字段类型为数值型。常用的算术运算符如表4.1所示。
表4.1 常用的算术运算符

在表4.1所列的8个运算符当中,取负运算“-”只需要一个操作数,称为单目运算符,其他运算符都需要两个操作数,称为双目运算符。各运算符的含义与数学中基本相同。
需要重点说明的问题如下:
(1)注意“/”与“\”的区别,“/”为浮点数除法运算符,执行标准的除法运算,运算结果为浮点数。“\”为整除运算符,执行整除运算,运算结果为整数。整除时的操作数一般为整型数,当遇到非整数时,首先要对小数部分进行四舍五入取整,然后再进行整除运算。例如:

(2)“Mod”是取模运算,用于求两数相除的余数。运算结果的符号取决于左操作数的符号。例如:

(3)优先级是指当一个表达式中存在多个运算符时,各运算符的执行顺序。算术运算符的优先顺序为:
指数运算→取负→乘法和除法→整除→取模运算→加法和减法
优先级相同时,按照从左到右的顺序执行运算。可以用括号改变运算时的优先顺序,括号内的运算总是优先于括号外的运算。
2.连接运算符
连接运算符用于将两个文本型数据进行连接,形成一个新的字符串。用于字符串连接运算的运算符有两个:“&”和“+”。
“&”运算符用来强制两个表达式作字符串连接。对于非文本类型的数据,先将其转换为文本型,再进行连接运算。“+”运算符具备加法和连接两种运算功能。最常用的是“&”运算符。
例如:要将“学生”表的“班级”和“姓名”字段合成一个字段,将两个文本型字段连接即可,表达式可以写为:[bjmc]&[xm]。
3.关系运算符
关系运算符又称比较运算符,用于对两个类型相同的数据进行比较运算。其比较的结果是一个逻辑值True或者False。常用的关系运算符如表4.2所示。
表4.2 常用的关系运算符

说明
(1)数值比较:同数学比较运算。
(2)日期比较:较早的日期小于较晚的日期。
(3)文本(字符串)比较:如果比较的是单个字符,则比较两个字符的ASCII码值。如果不是单个字符,则按字符的ASCII码值将两个字符串从左到右逐个比较。
【例4.8】建立表示以下条件的关系表达式。
(1)“选课成绩”表中的“成绩”字段值在60(不含60)分以下。
(2)“学生”表的“入校时间”在2010年9月1日(含2010年9月1日)以后。
(3)“学生”表的“政治面貌”为“团员”。
分析:
(1)数值比较:[cj]<60。
(2)日期比较:[rxsj]>=#2010-9-1#。
(3)文本比较:[zzmm]="团员"。
说明
(1)字段名必须用“[”和“]”方括号括起来。
(2)表达式中的字段名指表结构中的字段名称,而不是字段标题。
(3)日期型数据必须在日期前后加“#”,用以与数学表达式区别。
(4)文本型数据必须加双引号。
(5)所有符号均以英文状态录入。
4.逻辑运算符
逻辑运算符又称布尔运算符,对逻辑型数据进行运算。逻辑运算通常用于表示复杂的关系。常用的逻辑运算符如表4.3所示。
表4.3 常用的逻辑运算符

【例4.9】建立表示以下条件的逻辑表达式。
(1)“学生”表中“政治面貌”为“党员”或“团员”。
(2)“选课成绩”表中“成绩”区间为70~90。
分析:
(1)[zzmm]="党员"和[zzmm]="团员"两个条件要求有一个成立即可,是“或”的关系,所以表达式为:

(2)[cj]>=70和[cj]<=90两个条件要求同时成立,是“与”的关系,所以表达式为:

5.特殊运算符
常用的特殊运算符如表4.4所示。
表4.4 常用的特殊运算符

【例4.10】建立表示以下条件的表达式。
(1)“学生”表中“班级名称”为“工设101”“工设102”“工设111”。
(2)“选课成绩”表中“成绩”区间为70~90。
(3)“学生”表中“简历”为空值。
分析:
(1)[bjmc]="工设101"、[bjmc]="工设102"、[bjmc]="工设111"3个条件是“或”的关系,可以写成逻辑表达式:

也可以利用 In 运算符:

说明
In 后面的括号内是字符串列表,列表含有3个值,如果[bjmc]值等于列表中的一个值,该表达式就返回True。所以,上述两个表达式等价。
(2)数值区间可以采用先比较运算再逻辑运算的写法,如例3.9,也可以采用 Between 运算符:

说明
除了表示数值区间,Between 也可以用来表示字符区间,比如[test]字段值在"A"~"M",表达式为:

(3)表达式为:[jl] Is Null
6.Like 运算符
Like 运算符也是一种特殊运算符,用来比较两个字符串的模式是否匹配,即判断一个字串是否符合某一模式,在 Like 表达式中可以使用的通配符如表4.5所示。
表4.5 Like 表达式中可以使用的通配符

续表

【例4.11】建立表示以下条件的表达式。
(1)“学生”表中姓“张”的学生。
(2)“学生”表中姓名有3个字,而且最后一个字是“丽”的学生。
(3)“学生”表中“学号”的尾数为“01”的学生。
(4)“学生”表中“学号”的尾数为“01”~“05”的学生。
分析:
(1)学生的“姓名”字段的值以“张”开头,但姓名的长度不确定,所以“张”后应该跟“*”通配符。表达式如下:

(2)学生的“姓名”为3个字,最后一个字是“丽”,所以需要使用2个“?”通配符代替前面两个未知字符。表达式如下:

(3)学生“学号”尾部数字确定,学号长度固定,所以既可以使用“*”又可以使用“?”通配符来代替学号前面未知字符,由于学号由数字组成,所以还可以使用“#”通配符。表达式如下:

或:

或:

(4)学生的“学号”尾部数字是一个区间,所以使用“[ ]”通配符。表达式如下:

说明
Like 运算符及通配符常用于模糊查询。