IN(或 NOT IN)引入的子查询结果是一列零值或更多值。子查询返回结果之后,外部查询将利用这些结果。
like 确定给定的字符串是否与指定的模式匹配。模式可以包含常规字符和通配符字符。模式匹配过程中,常规字符必须与字符串中指定的字符完全匹配。然而,可使用字符串的任意片段匹配通配符。与使用 = 和 != 字符串比较运算符相比,使用通配符可使 LIKE 运算符更加灵活。1.IN后跟结果集形式,例 select * from studinfo where score in(select max(score) from studinfo) 这里,in或虽跟的查询语句得出来的是一个值,但他也代表一个结果集
2.like后跟一个字段值的形式 select * from studinfo where name like '李%'
查询所有姓李的人的纪录,虽然是若干条,但不是结果集
not取反即可
IF OBJECT_ID('TB')IS NOT NULL DROP TABLE TB GO CREATE TABLE TB(ID INT ,[NAME] VARCHAR(10)) INSERT TB SELECT 1,'ABCD' INSERT TB SELECT 2,'ABCE' INSERT TB SELECT 3,'ABgF' select * from tb where id not in(1,2) select * from tb where [name]not like '%c%' /*ID NAME ----------- ---------- 3 ABgF(1 行受影响)ID NAME ----------- ---------- 3 ABgF */
not in后要跟结果集,而not like后要跟字段集的数据。
简单理解: not like -->不包含 not in -->不在...里
not like 是指,没有类似于某个字符串的记录 not in 是指不在某个集合中的记录
not like 指不像,如not like '%like%'指没有like的 not in 指不在其中,如not in (like,likeA,Alike)指不包括like,likeA,Alike 其他都可以
not in 相当于不等于 不在集合里面
IN(或 NOT IN)引入的子查询结果是一列零值或更多值。子查询返回结果之后,外部查询将利用这些结果。
like 确定给定的字符串是否与指定的模式匹配。模式可以包含常规字符和通配符字符。模式匹配过程中,常规字符必须与字符串中指定的字符完全匹配。然而,可使用字符串的任意片段匹配通配符。与使用 = 和 != 字符串比较运算符相比,使用通配符可使 LIKE 运算符更加灵活。1.IN后跟结果集形式,例
select * from studinfo where score in(select max(score) from studinfo)
这里,in或虽跟的查询语句得出来的是一个值,但他也代表一个结果集
2.like后跟一个字段值的形式
select * from studinfo where name like '李%'
查询所有姓李的人的纪录,虽然是若干条,但不是结果集
not取反即可
GO
CREATE TABLE TB(ID INT ,[NAME] VARCHAR(10))
INSERT TB SELECT 1,'ABCD'
INSERT TB SELECT 2,'ABCE'
INSERT TB SELECT 3,'ABgF'
select * from tb where id not in(1,2)
select * from tb where [name]not like '%c%'
/*ID NAME
----------- ----------
3 ABgF(1 行受影响)ID NAME
----------- ----------
3 ABgF
*/
not like -->不包含
not in -->不在...里
not in 是指不在某个集合中的记录
not in 指不在其中,如not in (like,likeA,Alike)指不包括like,likeA,Alike 其他都可以
like是针对列的运算符
in是针对集合(表)的运算符