0%

SQL中谓词的使用

LIKE、BETWEEN、IS NULL、IS NOT NULL的使用

在SQL中,谓词就是返回值位真值的函数。常用的谓词有LIKE、BETWEEN、IS NULL、IS NOT NULL、IN、EXISTS等。
按此定义MAX、MIN、ANY、ALL等并不能算作谓词(?)

LIKE

LIKE子句用于模糊查询,通常与通配符连用,如:

1
/*
2
* ‘_’匹配一个字符,‘%’匹配至少一个字符
3
* 查询学生表中姓欧阳的学生信息
4
*/
5
6
SELECT * 
7
FROM S 
8
WHERE Sname LIKE '欧阳%';

注意:在使用=替代LIKE时,通配符是不起转意作用的(即目标是“欧阳%”而非姓欧阳的人)

BETWEEN

BETWEEN的使用可以解放连续的不等式表达式,往往和AND连用,如:

1
/*
2
* 查询学号介于17100000和17120000之间的学生信息
3
*/
4
5
SELECT *
6
FROM S
7
WHERE Sno BETWEEN 17100000 AND 17120000;

此外,BETWEEN还可以与NOT连用,起到取反作用。
注意:不同数据库对边界处理可能不一致。

IS NULL、IS NOT NULL

SQL对数值和NULL的比较是不容忍的。即任何企图和NULL的比较都是False。例如以下查询均返回NULL:

1
SELECT(3=NULL); /* NULL */
2
SELECT(3!=NULL); /* NULL */
3
SELECT(NULL=NULL); /* NULL */
4
SELECT(NOT NULL=NULL); /* NULL */
5
SELECT(NOT NULL!=NULL); /* NULL */

要返回真值,应该使用IS NULL 或 IS NOT NULL,如:
1
SELECT(3 IS NOT NULL); /* 1 */
2
SELECT(NULL IS NULL); /* 1 */
3
SELECT((NULL=NULL) IS NOT NULL); /* 0 */