`
wsql
  • 浏览: 11812816 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

被遗忘的SQLServer比较运算符修饰词

阅读更多

SQLServer中有三个关键字可以修改比较运算符:All、Any和Some,其中Some和Any等价。

官方的参考文档

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比较运算符修饰词

    本篇文章是对被遗忘的SQLServer比较运算符修饰词进行了详细的分析介绍,需要的朋友参考下

    被遗忘的SQLServer比较运算符谓词

    SQLServer中有三个关键字可以修改比较运算符:All、Any和Some,其中Some和Any等价。

    [SQL Server] Microsoft SQL Server 2012 技术内幕 (英文版)

    [Microsoft Press] Microsoft SQL Server 2012 技术内幕 (英文版) [Microsoft Press] Microsoft SQL Server 2012 Internals (E-Book) ☆ 图书概要:☆ Dive deep inside the architecture of SQL Server 2012 ...

    Microsoft SQL Server 2008 R2 SP1 Native Client

    Microsoft SQL Server 2008 Native Client (SQL Server Native Client) 是单一动态链接库 (DLL),其中包含 SQL OLE DB 提供者和 SQL ODBC 驱动程序。此链接库针对使用机器码 API (ODBC、OLE DB 和 ADO) 的应用程序...

    SQLServer+ 免安装版

    SQLServer+ 免安装版 SQLServer+是在原有SQLServer2000的基础上改善了数据库安装的繁锁性,让软件企业在发布基于SQLServer2000数据库软件的时候,只要把软件打包进入安装包而不需要再单独安装数据库,也不需要另外...

    SQL Server 2014基础入门视频教程 (40集,含课件)

    SQL Server 2014基础入门视频教程 (40集,含课件) 1.SQL Server 2014简介.mp4 2.SQL Server 2014硬件和软件要求.mp4 3.SQL Server 2014数据库安装.mp4 4.SQL Server 2014数据库创建.mp4 5.SQL Server 2014...

    完美SQL Server绿色版

    SQLServer文件, 否则后果自负。作者不为您承担任何方面的任何责任。 SQL Server 2000绿色版注意事项 --------------------------- 1 本地连接服务器请使用界面中“服务器名”文本框中的文本作为服务器名连接...

    SqlServer连接工具

    SqlServer连接工具SqlServer连接工具SqlServer连接工具

    ORACLE和SQL Server的语法区别

    4. 检查所有的比较运算符。 5. 用“+”字符串串联运算符代替“||”字符串串联运算符。 6. 用 Transact-SQL 程序代替 PL/SQL 程序。 7. 把所有 PL/SQL 游标改为非游标 SELECT 语句或 Transact-SQL 游标。 8. 用 ...

    支持navicate 连接 sqlserver 2019 的 驱动sqlserver native client 11.0

    支持navicate 连接 sqlserver 2019 的 驱动sqlserver native client 11.0 ,亲测可用,ssms自带的不能连接,会报远程关闭错误。

    SQL Server 2016 KEY

    SQL Server 2016 Web BXJTY-X3GNH-WHTHG-8V3XK SQL Server 2016 Standard B9GQY-GBG4J-282NY-QRG4X SQL Server 2016 Enterprise Core TBR8B-BXC4Y-298NV-PYTBY SQL Server 2016 Enterprise MDCJV-3YX8N-WG89M-KV443...

    sqlserver离线安装包

    sqlserver离线安装包

    SQL Server 2008 Native Client(32&64)

    Microsoft sql server 2008 Native Client (SQL Server Native Client) 是一个同时包含 SQL OLE DB 访问接口和 SQL ODBC 驱动程序的动态链接库 (DLL)。它对使用本机代码 API(ODBC、OLE DB 和 ADO)连接 Microsoft ...

    40集SQL Server 基础入门视频教程 SQL Server 数据库基础入门必备课程

    1.SQL Server 2014简介.mp4 10.SQL Server 2014定义表主键、外键.mp4 11.SQL Server 2014新增表记录.mp4 12.SQL Server 2014查询表记录.mp4 13.SQL Server 2014修改表记录.mp4 14.SQL Server 2014删除表记录....

    利用MysqlODBC把Sqlserver数据库导入到Mysql中

    使用mysql odbc后就比较好办,可以使用sql server的管理工具,也可以使用mysql的管理工具,更可以使用其它方的管理工具。这里介绍一个使用sql的mmc的方法 ,将sql server的数据转化为mysql的数据库,将源和目的反之...

    sql server 2008 安装教程

    sql server 2008 安装教程sql server 2008 安装教程sql server 2008 安装教程sql server 2008 安装教程sql server 2008 安装教程

    sql server ce server tools

    SQL Server 2005 移动版(SQL Server Mobile)或SQL Server 2000 Windows CE 2.0版(SQL Server CE 2.0)的企业和个人用户如果计划与SQL Server 2000或SQL Server 2005数据库保持同步,需要在您运行Microsoft ...

    sqlserver自动生成sql语句工具sqlserver转oracle

    sqlserver自动生成sql语句工具sqlserver转oracle

Global site tag (gtag.js) - Google Analytics