sql集合运算符使用方法

所属分类: 数据库 / MsSql 阅读数: 296
收藏 0 赞 0 分享

(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的全部结果来作为成功匹配的结果。

(4)EXISTS集合运算符:和IN、ANY、SOME、ALL等运算符不同,EXISTS运算符是单目运算符,它不与列匹配,因此它也不要求待匹配的集合是单列的。EXISTS运算符用来检查每一行是否匹配子查询,可以认为EXISTS就是用来测试子查询的结果是否为空,如果结果集为空则匹配结果为false,否则匹配结果为true。

复制代码 代码如下:

SELECT * FROM T_Category
WHERE EXISTS
(
SELECT * FROM T_Book
WHERE T_Book. FCategoryId = T_Category.FId
AND T_Book. FYearPublished<1950
)

在EXISTS后的子查询中,SQL对T_Category表中的每一行数据到子查询中进行匹配,测试T_Book 表中是否存在FCategoryId 字段值等于当前类别主键值且出版年份在1950 年之前的书籍。

更多精彩内容其他人还在看

SQL Substring提取部分字符串

SQL 中的 substring 函数是用来抓出一个栏位资料中的其中一部分。这个函数的名称在不同的资料库中不完全一样
收藏 0 赞 0 分享

用户"sa"登陆失败 SQLServer 错误18456的解决方法

sqlserver下用sa登录提示18456错误的解决方法。
收藏 0 赞 0 分享

drop,truncate与delete的区别

这里说的delete是指不带where子句的delete语句
收藏 0 赞 0 分享

SQL语句查询数据库中重复记录的个数

一个sql语句:一个表test有四个字段id,a,b,c,如果表中的记录有三个字段a,b,c都相等,则说明这条记录是相同的,求相同的记录的个数 。
收藏 0 赞 0 分享

SQL 导入导出Excel数据的语句

从Excel文件中,导入数据到SQL数据库中,很简单
收藏 0 赞 0 分享

可以获取客户端的IP地址的sql语句

利用SQL语句得到客户端的IP地址的代码
收藏 0 赞 0 分享

SQL 根据汉字获取全拼的代码

SQL 根据汉字获取全拼(有些字还没有添加上去,请自已加上去,涂聚文注)
收藏 0 赞 0 分享

sqlserver exists,not exists的用法

exists,not exists的使用方法示例,需要的朋友可以参考下。
收藏 0 赞 0 分享

sqlserver substring函数使用方法小结

在操作sqlserver时候用到了substring函数,特整理一些实例,需要的朋友可以参考下。
收藏 0 赞 0 分享

sql 判断数据库,表,存储过程等是否存在的代码

sql下用了判断各种资源是否存在的代码,很实用。需要的朋友可以参考下。
收藏 0 赞 0 分享
查看更多