加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

Oracle和MS SQL Server中的NOT条件和NOT()之间有什么区别

发布时间:2021-03-05 11:25:11 所属栏目:站长百科 来源:网络整理
导读:最近我可巧碰着了Sql Server和Oracle中的not().实行将NOT前提和not()与差异的运算符(如LIKE,IN等)举办较量的差异示例.我没有看到功效集和记录计数方面的任何差别,可是假如两者都做同样的工作,则但愿与社区确认或任何告诫? 示例查询 select count(*) from Em

最近我可巧碰着了Sql Server和Oracle中的not().实行将NOT前提和not()与差异的运算符(如LIKE,IN等)举办较量的差异示例.我没有看到功效集和记录计数方面的任何差别,可是假如两者都做同样的工作,则但愿与社区确认或任何告诫?

示例查询

select count(*) from Emp where country not in ('ENGLAND UK','HAITI','IRELAND') 
select count(*) from Emp where not(country  in ('ENGLAND UK','IRELAND'))

办理要领

NOT要害字的两个展示位置在逻辑上都是等效的,并给出沟通的功效.在括号内的表达式之前不会反转该表达式的功效,但这是传统的布尔逻辑,而不是特定于SQL.

在T-SQL中,SQL Server 2014和SQL Server 2016中的执行打算与您的示例沟通(假设:表具有主键,而国度/地域未编入索引).

有一点必要留意,出格是您给出的示例:当IN运算符的参数中包括NULL值时,IN运算符的举动与预期的差异.对付Oracle,see here;

对付T-SQL,请思量以下事项:

select 1 where 'A' in (null)

这不会返回一行.这好像微不敷道,可是:

select 1 where 'A' not in (null)

此声明不会返回一行.此刻我们可以争冲突,假如我们从第一个语句中逻辑反转表达式,它必定会返回一行:

select 1 where not ('A' in (null))

但究竟并非云云,由于IN(NULL)的计较功效为neither true nor false.

(编辑:湖南网)

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

    热点阅读