比较操作符¶
比较操作符在作为条件的表达式中使用,将一个表达式与另一个表达式比较,比较结果可为TRUE、FALSE或者UNKNOWN。下表列出了神通数据库中支持的比较操作符:
表34神通数据库支持的比较操作符
| 操作符 | 描述 | 举例 |
|---|---|---|
| = | 相等 | SELECT empname FROM employee WHERE empnum = 'E3'; |
!= <> |
不等于 | SELECT empnum FROM employee WHERE grade <> 10; SELECT empnum FROM employee WHERE grade != 10; |
> < |
大于 小于 |
SELECT empnum FROM employee WHERE grade > 10; |
>= <= |
大于或等于 小于或等于 |
SELECT empnum FROM employee WHERE grade >= 10; |
| IN | 等于任何成员 | SELECT empname FROM employee WHERE empnum IN ('E1','E3','E5'); |
| NOT IN | 不等于任何成员 | SELECT empname FROM employee WHERE empnum NOT IN ('E1','E3','E5'); |
| ANY, SOME | 返回集合中的任何一个元素 | SELECT * FROM employee WHERE grade = ANY (SELECT grade FROM employee WHERE empnum<>'E3'); |
| ALL | 集合中的所有元素 | SELECT * FROM employee WHERE grade > ALL (SELECT grade FROM emp_clerk); |
[NOT] BETWEEN X AND Y |
[不]在[X,Y]区间 | SELECT * FROM employee WHERE grade BETWEEN 10 AND 20; |
| EXISTS | 如果子查询返回不为空,则为TRUE | SELECT empname FROM employee WHERE EXISTS (SELECT * FROM employee,emp_clerk WHERE employee.empnum = emp_clerk.empnum); |
X [NOT] LIKE Y [ESCAPE Z] |
如果X[不]同模式Y 相匹配,则为TRUE。在Y 中:符号'%'可匹配0 个或多个字符,除去空值;符号'_'可匹配任何单个字符。关键字ESCAPE 用以 表示Y 字符串中紧跟在Z 字符后面的'%' 或'_'表示符号本身而不是匹配符。右例中的SQL 语句表示从表employee中查询出name 字段的前两个字符为'p_' 的所有记录,如'p_word'、'p_11'等 |
SELECT empname,empnum FROM employee WHERE empname LIKE 'ps_%' ESCAPE 's'; |
X [NOT] ILIKE Y [ESCAPE Z] |
ILIKE与LIKE用法相似,但是ILKE匹配时则不区分字符串的大小写。 | SELECT empname ,empnum FROM employee WHERE empname ILIKE 'ps_%' ESCAPE 's'; |
IS [NOT] NULL |
测试是否为空值 | SELECT empnum FROM employee WHERE city IS NULL; |
/*************table employee*************/
create table employee
(empnum char(3) NOT NULL,
empname char(20),
grade decimal(4),
city char(15)
);
INSERT INTO employee VALUES('E1','张三',10,'北京');
INSERT INTO employee VALUES('E2','P_p',15,NULL);
INSERT INTO employee VALUES('E1','王五',8,'杭州');
INSERT INTO employee VALUES('E3','p_p',20,NULL);
INSERT INTO employee VALUES('E1','陆七',1,'南京');
/*************table emp_clerk*************/
create table emp_clerk
(empnum char(3) NOT NULL,
empname char(20),
grade decimal(4),
city char(15)
);
INSERT INTO emp_clerk VALUES('E1','张三',10,'北京');
INSERT INTO emp_clerk VALUES('E1','王五',8,'杭州');
INSERT INTO emp_clerk VALUES('E1','陆七',1,'南京');