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 */