手机
当前位置:查字典教程网 >编程开发 >mssql数据库 >被遗忘的SQLServer比较运算符谓词
被遗忘的SQLServer比较运算符谓词
摘要:官方的参考文档http://technet.microsoft.com/zh-cn/library/ms187074%28SQL.90%29...

官方的参考文档

http://technet.microsoft.com/zh-cn/library/ms187074%28SQL.90%29.aspx

他们作用于比较运算符和子查询之间,作用类似Exists、not exists、in、not in以及其他逻辑意义,这些语法同样被SQLServer2000支持但是很少看到有人用它们。

复制代码 代码如下:

set nocount on

use tempdb

go

if (object_id ('t1' ) is not null ) drop table t1

create table t1 (n int )

insert into t1 select 2 union select 3

if (object_id ('t2' ) is not null ) drop table t2

create table t2 (n int )

insert into t2 select 1 union select 2 union select 3 union select 4

select * from t2 where n> all (select n from t1 ) --4

select * from t2 where n> any (select n from t1 ) --3,4

--select * from t2 where n>some(select n from t1) --3,4

select * from t2 where n= all (select n from t1 ) --无数据

select * from t2 where n= any (select n from t1 ) --2,3

--select * from t2 where n=some(select n from t1) --2,3

select * from t2 where n< all (select n from t1 ) --1

select * from t2 where n< any (select n from t1 ) --1,2

--select * from t2 where n<some(select n from t1) --1,2

select * from t2 where n<> all (select n from t1 ) --1,4

select * from t2 where n<> any (select n from t1 ) --1,2,3,4

--select * from t2 where n<>some(select n from t1)--1,2,3,4

set nocount off

注意,如果t1中包含null数据,那么所有All相关的比较运算将不会返回任何结果,原因就不用多解释了。而因为t1和t2表的null的存在他们和not exists之类的比较符会有一些区别。

比如下面两句

select * from t2 a where not exists(select 1 from t1 where n>=a.n)

select * from t2 where n >all(select n from t1)

他们逻辑上意义很像但是对于null的处理却是恰恰相反,第一句会忽略子查询的null而把t2的null同时查出来,第二句却是忽略了t2的null同时会因为t1中的null而无法查询到数据。

【被遗忘的SQLServer比较运算符谓词】相关文章:

SQL Server 数据库自动执行管理任务

SQL Server 2005 还原数据库错误解决方法

sqlserver 比较两个表的列

使用 SQL Server 添加删除修改查询储存过程

安装SQLServer2005提示SQL Server服务无法启动

SQL Server 版本变更检查 警告

SQL Server 工作技巧

SQL Server 2008安装图解(详细)

SQL Server 移动系统数据库

SQLServer中的通配符和转义字符

精品推荐
分类导航