购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4.3 常见运算符介绍

运算符用于连接表达式中的各个操作数,其作用是指明对操作数进行的运算。常见的运算有算术运算、比较运算、位运算以及逻辑运算。运用运算符可以更加灵活地使用数据表中的数据,常见的运算符类型有算术运算符、比较运算符、逻辑运算符、位运算符。本节将介绍各种运算符的特点和使用方法。

4.3.1 运算符概述

运算符是告诉Oracle所要执行特定算术或逻辑运算的符号。Oracle的内部运算符很丰富,主要有四大类,分别是算术运算符、比较运算符、逻辑运算符、位运算符。

1.算术运算符

用于各类数值运算,包括加(+)、减(-)、乘(*)、除(/)。

2.比较运算符

用于比较运算,包括大于(>)、小于(<)、等于(=)、大于等于(>=)、小于等于(<=)、不等于(!=)以及IN、BETWEEN AND、IS NULL、LIKE等。

3.逻辑运算符

逻辑运算符的求值所得结果为1(true)或0(false),这类运算符有逻辑非(NOT或者!)、逻辑与(AND或者&&)、逻辑或(OR或者||)、逻辑异或(XOR)。

4.位运算符

参与运算的操作数按二进制位进行运算,包括位与(&)、位或(|)、位非(~)、位异或(^)、左移(<<)、右移(>>)6种。

接下来将详细介绍Oracle中各种运算符的使用。

4.3.2 算术运算符

算术运算符是SQL中基本的运算符,Oracle中的算术运算符如表4-3所示。

表4-3 Oracle中的算术运算符

下面分别讨论不同算术运算符的使用方法。

【例4.9】创建数据表tmp7,定义数据类型为NUMBER的字段num,插入值64,对num值进行算术运算。

首先创建数据表tmp7,执行如下的SQL语句:

向字段num插入数据64:

     INSERT INTO tmp7 VALUES(64);

接下来,对num值进行加法和减法运算:

由计算结果可知,可以对num字段的值进行加法和减法运算,而且由于“+”和“–”的优先级相同,因此先加后减或者先减后加的结果是相同的。

【例4.10】对数据表tmp7中的num进行乘法、除法运算。

由计算结果可知,对num进行除法运算时,由于64无法被3整除,因此Oracle对num/3求商的结果保存到了小数点后面8位,结果为21.33333333。

在算术运算时,除数为0的除法是没有意义的,因此除法运算中的除数不能为0,如果被0除,就会返回错误提示信息。

【例4.11】用0除num。

     SQL> SELECT num / 0 FROM tmp7;
     ERROR:
     ORA-01476: 除数为0

4.3.3 比较运算符

比较运算符经常用于SELECT的查询条件子句,用来查询满足指定条件的记录。Oracle中的比较运算符如表4-4所示。

表4-4 Oracle中的比较运算符

下面分别讨论不同比较运算符的含义。

1.等于运算符“=”

“=”用来判断数字、字符串和表达式是否相等。

2.不等于运算符“!=”

“!=”用于判断数字、字符串、表达式是否不相等。

3.小于或等于运算符“<=”

“<=”用来判断左边的操作数是否小于或者等于右边的操作数。

4.小于运算符“<”

“<”用来判断左边的操作数是否小于右边的操作数。

5.大于或等于运算符“>=”

“>=”用来判断左边的操作数是否大于或者等于右边的操作数。

6.大于运算符“>”

“>”用来判断左边的操作数是否大于右边的操作数。

7.BETWEEN…AND运算符

BETWEEN…AND运算符用于判断数值是否在指定的范围内,通常和WHERE子句一起使用。BETWEEN…AND条件返回一个介于指定上限和下限之间的范围值。

例如,选出出生在1980到1990的学生姓名:

     SELECT name FROM student
     WHERE  birth  BETWEEN  '1980' AND  '1990';

上述语句包含上限值和下限值,和下面的语句效果一样。

     SELECT name FROM student
     WHERE  birth>= '1980' AND  birth<= '1990';

8.IN运算符

IN运算符用来判断操作数是否为IN列表中的一个值。同样,NOT IN运算符用来判断操作数是否不是IN列表中的一个值。

例如,选出年龄是25和26的学生:

     SELECT name FROM student
     WHERE  age  IN(25,26);

9.LIKE

在一个班级中,也许老师只知道某个学生的姓氏,并不知道全部名字。此时就可以使用LIKE进行查询。LIKE运算符用来匹配字符串。

LIKE运算符在进行匹配时可以使用下面两种通配符:

(1)%:用来代表有零个或者多个字符组成的任意顺序的字符串。

(2)_:只能匹配一个字符。

例如,选出姓张的所有学生(输出他们的姓名):

     SELECT name FROM student
     WHERE  name LIKE '张%';

4.3.4 逻辑运算符

Oracle中的逻辑运算符如表4-5所示。

表4-5 Oracle中的逻辑运算符

这3个运算符的作用如下:

(1)NOT运算符:又称取反运算符或“非”运算符,NOT通常是单目运算符,即NOT的右侧才能包含表达式,是对其右边表达式的结果取反,如果表达式的结果为true,那么NOT的结果就为false;如果表达式的结果为false,那么NOT的结果就为true。

NOT运算符后面常常和IN、LIKE、BETWEEN-AND和NULL等关键字一起使用。

例如,选择年龄不是25或者26的学生姓名:

     SELECT name FROM student
     WHERE  age  IN(25,26);

(2)AND运算符:对于AND运算符来说,要求两边的表达式结果都为true,因此通常被称为“与”运算符,如果AND左右两边任何一方的返回结果为NULL或false,那么逻辑运算的结果就为false。

例如,选出学生年龄是25且姓张的学生(输出他们的姓名):

     SELECT name FROM student
     WHERE  age=25 AND  name LIKE '张%';

(3)OR运算符:OR运算符又称为“或”运算符,也就是说只要左右两侧的逻辑表达式的任何一方为true,结果就为true。

例如,选出学生年龄是25或者姓张的学生(输出他们的姓名):

     SELECT name FROM student
     WHERE  age=25 OR  name LIKE '张%';

这样无论年龄为25的学生还是姓张的学生,都会被选出来。

4.3.5 运算符的优先级

运算符的优先级决定了不同的运算符在表达式中计算的先后顺序。表4-6列出了Oracle中的各类运算符及其优先级。

表4-6 运算符按优先级由低到高排列

可以看到,不同运算符的优先级是不同的。一般情况下,级别高的运算符先进行计算,如果级别相同,Oracle按表达式的顺序从左到右依次计算。当然,在无法确定优先级的情况下,可以使用圆括号“()”来改变优先级,并且这样会使计算过程更加清晰。 Awa3DfTTseZP60G8d/gjaDBrgggxfW4Kv9wGhiN15xmibKbBV2PmNFOKCDxtjWPk

点击中间区域
呼出菜单
上一章
目录
下一章
×