加入收藏 | 设为首页 | 会员中心 | 我要投稿 宁德站长网 (https://www.0593zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQL的集合运算符简介

发布时间:2016-08-17 21:44:07 所属栏目:MsSql教程 来源:站长网
导读:最近学习了SQL SERVER方面的知识,毕竟做Web应用,少不了跟数据库打交道。学习的来源主要是《 程序员的SQL金典》这本书。 今天介绍数据库里面的集合运算符,它
最近学习了SQL SERVER方面的知识,毕竟做Web应用,少不了跟数据库打交道。学习的来源主要是《 程序员的SQL金典》这本书。

今天介绍数据库里面的集合运算符,它是指匹配集合的每一个结果。数据库集合运算符包括:IN、 ANY、SOME、ALL、EISTS及EXCEPT和INTERSECT等。

(1)IN运算符:它可以用来匹配一个固定集合中的某一项。比如说一个集合里面的年份有 (2001,2003,2005),那么就可以有:

SELECT * FROM T_Book

WHERE FYearPublished IN(2001,2003,2005)

IN运算符,除了支持从固定的集合里面去匹配,当然也支持动态的集合方式去匹配。比如如下方式:

SELECT * FROM T_Reader

WHERE FYearOfJoin IN

(

select FYearPublished FROM T_Book

)

(2)ANY和SOME集合运算符:在SQL SERVER里面,ANY和SOME是同义词,二者的用法和功能一样(一 样还搞两个,不知道是不是蛋疼)。相比于IN运算符,ANY和SOME需要与其它的比较符(大于(>)、 等于(=)、小于(<)、大于等于(>=)、小于等)共同使用,而且比较符需要在它们的前面。

SELECT * FROM T_Reader

WHERE FYearOfJoin =ANY

(

select FYearPublished FROM T_Book

)

注意:和IN 运算符不同,ANY 和SOME运算符不能与固定的集合相匹配,比如下面的SQL 语句是错误 的:

SELECT * FROM T_Book

WHERE FYearPublished<ANY(2001,2003,2005)

(3)ALL集合运算符:在SQL SERVER里面,ALL运算符也需要与其它的比较符(大于(>)、等于 (=)、小于(<)、大于等于(>=)、小于等)共同使用,而且比较符需要在它们的前面。

SELECT * FROM T_Book

WHERE FYearPublished<ALL

(

SELECT FYearOfJoin FROM T_Reader

)

注意:

I、与ANY和SOME 运算符相同,ALL 运算符同样不能与固定的集合相匹配,比如下面的SQL 语句是错 误的:

SELECT * FROM T_Book

WHERE FYearPublished<ALL(2001,2003,2005)

II、关于使用ALL运算符,还有一项需要注意,那就是这个ALL子查询结果为空时,匹配的结果并不是 以空的方式来处理,而是相当于全部匹配成功。所以在使用ALL运算符的时候,这一个问题很容易在系统 中造成BUG,因此使用时必须注意。比如:

SELECT * FROM T_Book

WHERE FYearPublished<ALL

(

SELECT FYearOfJoin FROM T_Reader

WHERE FProvince = 'JiangSu'

)

如果ALL子查询的结果为空时,则将会取SELECT FYearOfJoin FROM T_Reader的全部结果来作为成功 匹配的结果。

(编辑:宁德站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读