首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在where子句中使用SQL not in函数时,NULL值不会在结果集中返回

。这是因为NULL代表缺失或未知值,它不等于任何其他值,包括它自身。所以当使用not in函数时,如果列表中包含NULL值,则不会匹配这些NULL值,因此不会在结果集中返回。

使用not in函数时,需要注意以下几点:

  1. 确保列表中不包含NULL值,否则可能会导致预期之外的结果。
  2. 如果需要将NULL值包含在结果集中,可以使用is null语句或coalesce函数来处理。

举例说明: 假设有一个表students,其中包含了学生的姓名和班级信息。如果我们想要查询不在某个班级的学生,可以使用not in函数进行查询。假设要排除班级为NULL和班级为1的学生,可以使用以下语句:

代码语言:txt
复制
SELECT * FROM students WHERE class_id NOT IN (NULL, 1);

如果我们希望将班级为NULL的学生包含在结果集中,可以使用is null语句:

代码语言:txt
复制
SELECT * FROM students WHERE class_id NOT IN (1) OR class_id IS NULL;

如果要将班级为NULL的学生排除在外,可以使用coalesce函数将NULL值替换为其他值进行比较:

代码语言:txt
复制
SELECT * FROM students WHERE COALESCE(class_id, -1) NOT IN (1);

在以上示例中,我们使用了腾讯云的数据库产品TDSQL进行查询操作。TDSQL是一种高性能、高可用的分布式数据库服务,适用于各种应用场景。更多关于TDSQL的信息,请参考腾讯云官方文档:TDSQL产品介绍

相关搜索:使用where子句在sql中添加默认值SQL Server :函数返回可在where子句中使用的列值?在SQL中使用查询结果来确定where子句中的值?在Streambuilder中对集合使用where()时总是返回null即使不满足其中一个where子句,也在SQL中返回结果Oracle PL/SQL -接收作为IN参数的值列表,在WHERE子句中使用它们,并在过程中返回结果在PHP中从函数返回值时无法获取结果学习SQL:使用声明的INT从单独的表中返回特定值,然后在where函数中使用当我在where子句中传递一个字符串给sql查询时,为什么sql查询不返回结果?在where中使用电子邮件获取值时,SQL Server中的Select语句返回null;无法使用select使用带点的值获取数据是否有一个SQL查询/函数可以在只有一行满足WHERE子句的要求时返回一组行?在Kotlin中设置getter的返回值时使用匿名函数使用电子在多个回调函数中返回值时出错在PL/SQL中的WITH子句中使用内联函数时,为什么会出现编译错误?在where子句中使用非聚集索引而不是索引查找时,MS SQL执行计划中的索引扫描如何使用sql函数在键值对中搜索特定键并返回其相应值当Select string中的值为Null时,需要在使用FOR XML PATH的SQL查询中返回字符串如何对列表中的每一项执行linq查询,在where子句中使用它,并从每个查询的结果中返回一个集合?如何使用pl/SQL函数在LOV项中列出从1到20的数字-for示例?返回值与显示值相同在使用聚合函数时,如何将一列中的空值替换为另一列中的值?- SQL
相关搜索:
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

SQL基础查询方法

FROM子句仅列出Product这一个表,该表用来检索数据。WHERE子句指定出条件:Product表,只有ListPrice列大于40,该所在的行才符合 SELECT 语句的要求。...通常,每个选择列表表达式都是对数据所在的源表或视图中的列的引用,但也可能是对任何其他表达式(例如,常量或 Transact-SQL 函数)的引用。选择列表中使用 * 表达式可指定返回源表的所有列。...如果没有指定 DISTINCT,将返回所有行,包括重复的行。 空将被认为是相互重复的内容。不论遇到多少个空结果返回一个 NULL。...一个复杂表达式,通过对一个或多个简单表达式使用运算符而生成。这使结果集中得以包含基表不存在,但是根据基表存储的计算得到的。这些结果集列被称为派生列。 表达式可以包含 $ROWGUID 关键字。...= s.CustomerID WHERE c.CustomerID IS NOT NULL ORDER BY s.Name; 比较 null 请谨慎从事。

4.3K10

T-SQL基础(一)之简单查询

查询筛选中,只返回条件表达式(WHERE、HAVING、ON)运算结果为True的数据。 CHECK约束,返回表达式运算结果不为False的结果。...两逻辑 与T-SQL的大多数谓词不同,EXISTS使用逻辑(True/False),而不是三逻辑; EXISTS( SELECT * FROM T_A WHERE Id=12),EXISTS...使用NULL应注意以下几点: 将NULL与其它进行比较,不管该是否为NULL结果均为Unknown 应使用IS NULL或IS NOT NULL来判断是否为NULL INSERT未给列指定则插入...的特殊性 若列名为tag的例存在a,NULL,c,d几行数据,那么COUNT(*)返回4而COUNT(tag)则返回3 NULL参与的逻辑运算结果很可能是Unknown(三逻辑也是引发应用错误的重要原因...SELECT语句用于指定返回到查询结果集中的列,生成查询结果表。注意,SELECT子句之前执行的子句无法使用SELECT子句中的列的别名,否则会返回Invalid column name错误。

4.2K20
  • 《MSSQL2008技术内幕:T-SQL语言基础》读书笔记(上)

    (4)关于OVER子句:为行定义一个窗口以便进行特定的运算   OVER子句的优点在于能够返回基本列的同时,同一行对它们进行聚合;也可以表达式混合使用基本列和聚合列。   ...SQL,对于UNKNOWN和NULL的处理不一致,这就需要我们在编写每一条查询语句应该明确地注意到正在使用的是三谓词逻辑。   ...如果不需要支持输入,则使用视图;反之,则使用内联表函数。 四、集合运算 4.1 UNION 并集运算 ?   T-SQL。UNION集合运算可以将两个输入查询的结果组合成一个结果集。...T-SQL,INTERSECT集合运算对两个输入查询的结果取其交集,只返回两个查询结果集中都出现的行。   ...这里需要说的是,集合运算对行进行比较,认为两个NULL相等,所以就返回该行记录。 4.3 EXCEPT 差集运算 ?   T-SQL,集合之差使用EXCEPT集合运算实现的。

    2K51

    SQL数据库查询语句

    限制查询结果返回行数 使用top选项可限制查询结果返回行数,即返回指定个数的记录数。...集合列出所有可能的,当表达式的与集合的任一元素个匹配,即返回true,否则返回false。...即上例where子句等价于:where 专业名=’计算机’。 5.使用null的查询 当需要判定一个表达式的是否为空使用 is null关键字。...格式为: is [not] null 当不使用not,若表达式的为空,则返回true,否则返回false;当使用not结果刚好相反。...(五)使用统计函数:又称集函数,聚合函数 在对表进行检索,经常需要对结果进行计算或统计,T-SQL提供了一些统计函数(也称集函数或聚合函数),用来增强检索功能。

    4.3K20

    如何管理SQL数据库

    SQL,星号充当占位符来表示“所有”: SELECT * FROM table; 使用WHERE子句 您可以通过附加带有WHERE子句的SELECT语句来缩小查询结果的范围,如下所示: SELECT...LIKE 测试是否与指定的字符串匹配 IS NULL 测试NULL IS NOT NULL 测试除以外的所有 NULL 使用通配符 SQL允许使用通配符。...以下语法将返回column中保存的的总数: SELECT COUNT(column) FROM table; 您可以通过附加一个WHERE子句来缩小COUNT函数结果范围,如下所示: SELECT...就其本身而言,上一节描述的聚合函数返回单个。但是,您可以通过包含GROUP BY子句来查看对列每个匹配执行的聚合函数结果。...INNER JOIN将返回两个表具有匹配的所有记录,但不会显示任何没有匹配的记录。 通过使用外部 JOIN子句,可以从两个表的一个表返回所有记录,包括另一个表没有相应匹配的

    5.5K95

    SQL 简易教程

    SELECT TOP 子句 用于规定要返回的记录的数目。 MySQL 中使用 LIMIT 关键字。...UNION ,MySQL 会把结果集中重复的记录删掉,而使用 UNION ALL ,MySQL 会把所有的记录返回,且效率高于 UNION。...注意:UNION 结果集中的列名总是等于 UNION 第一个 SELECT 语句中的列名。这种行为带来一个有意思的副作用。由于只使用第一个名字,那么想要排序也只能用这个名字。...GROUP BY column_name; HAVING 子句 SQL 增加 HAVING 子句原因是,WHERE 关键字无法与聚合函数一起使用。...表示如果NULL 则 IFNULL() 返回 0: SQL EXISTS 运算符 EXISTS 运算符用于判断查询子句是否有记录,如果有一条或多条记录存在返回 True,否则返回 False。

    2.8K10

    SQL Cookbook》 - 第三章 多表查询

    NOT IN这种形式,会得到emp所有deptno,外层查询会返回dept表"不存在于"或者"未被包含在"子查询结果集中的deptno。需要自行考虑重复项的过滤操作。...EXISTS/NOT EXISTS和关联子查询一起使用时,SELECT的列,不重要,之所以使用NULL,是为了让注意力集中子查询的连接操作上,而不是SELECT的列上。 5. ...但是当使用标量子查询,必须保证返回的是标量值(单),不能返回多行。 7. ...组合适用连接查询和聚合函数 如果连接查询产生了重复行,通常有两种办法来使用聚合函数, (1) 调用聚合函数使用关键字DISTINCT,每个都会先去掉重复项再参与计算。...多个表返回缺少的 使用全外连接,基于一个共同从两个表返回缺少的,全外连接查询就是合并两个表的外连接查询的结果集。

    2.4K50

    数据库的检索语句

    而COUNT(FName)统计的则是除了结果集中 FName 不为空(也就是不等于 NULL)的记录的总条数。...使用它进行范围检測将会得到比其它方式更好的性能。因此进行范围检測的时候应该优先使用“BETTWEEN AND”。...1.3.1having子句 有的时候须要对部分分组进行过滤,能够在数据库系统运行以下的SQL的时候, 数据库系统会提示语法错误, 这是由于聚合函数不能在WHERE语句中使用,必须使用HAVING子句来取代...DISTINCT是对整个结果集进行数据反复抑制的。 联合结果集 有的时候我们须要组合两个全然不同的查询结果集, 而这两个查询结果之间没有必定的联系。仅仅是我们须要将他们显示一个结果集中而已。...SQL能够使用UNION运算符来将两个或者多个查询结果集联合为一个结果集中。 仅仅要用UNION操作符连接这两个查询语句就能够将两个查询结果集联合为一个结果集。

    2.5K10

    【重学 MySQL】三十八、group by的使用

    注意事项 使用WITH ROLLUP,应确保你的SQL查询可以处理NULL,因为汇总行会包含NULL。...结果集中,你可能需要使用COALESCE或IFNULL等函数来处理或忽略NULL,特别是进行进一步的计算或展示。...GROUP BY 必须声明 FROM 后面、WHERE 后面、ORDER BY 前面、LIMIT 前面 当使用 WITH ROLLUP ,不能同时使用 ORDER BY 子句进行结果排序,即 WITH...如果在 SELECT 列表包含了非聚合列且这些列未出现在 GROUP BY 子句中,那么查询将不会执行,并会报错(某些数据库系统,如 MySQL 的旧版本,这可能会静默地工作,但返回结果可能不是你所期望的...聚合函数用于对 GROUP BY 子句产生的每个分组执行计算。 可以通过 HAVING 子句对分组后的结果进行过滤,这与 WHERE 子句不同,WHERE 在数据分组前进行过滤。

    13310

    SQL 基础--> ROLLUP与CUBE运算符实现数据汇总

    --使用CUBE子句实现对数据的汇总 --从结果集中可以看出CUBE对不同的维度也实现了数据汇总,本例多出的列即为不同的JOB也产生了汇总数据 SQL> SELECT deptno,job, SUM...二、使用GROUPING函数处理汇总结果的空 GROUPING函数仅在使用ROLLUP和CUBE查询中使用,可以接受一列,其结果返回为或者,如果列为空,则返回,否则返回 --单列使用GROUPING...GROUPING_ID函数和HAVING子句过滤结果集 --GROUPING_ID函数接受一列或多列输入,返回一个十进制的 --GROUPING_ID返回为调用GROUPING函数的组合结果...,col2...)的列数 CUBE: 创建所有可能的小计 1.结果集将会包括相应rollup的所有并加上额外的合并 2.如果有n类cube规定,将会有的n次方的小计返回 GROUPING...()函数: 仅仅接受CUBE或ROLLUP的单列,不能使用复合列,如果列为空,将返回,否则返回 通常配合CASE WHEN 用于替换空 GROUPING SETS子句: 用于只返回小计记录

    1.3K30

    【重学MySQL】十三、基本的 select 语句

    WHERE(可选):指定用于过滤结果的条件。只有满足条件的行才会被检索出来。如果省略了WHERE子句,那么会检索表的所有行。...DESC; -- 这里使用了别名Salary进行排序 别名聚合函数的应用 使用聚合函数(如SUM、AVG、COUNT等),为结果列指定别名尤其有用,因为它可以清晰地表示该列包含的数据类型或含义...distinct MySQL,DISTINCT关键字用于查询结果返回唯一不同的。当你从表检索数据,如果表中有重复的行,并且你只希望看到每个唯一一次,那么就可以使用DISTINCT。.../ NULL; -- 结果NULL,尽管真实数学除以0是未定义的,但这里是因为有NULL 字符串连接 当使用CONCAT()等字符串函数,如果任何参数是NULL,则整个CONCAT()函数结果也是...返回第一个非NULL 总之,当在MySQL编写查询并处理可能包含NULL的列,重要的是要了解NULL不同运算和函数的行为,并相应地调整你的查询逻辑。

    13410

    SQL命令 WHERE(一)

    还可以UPDATE命令、DELETE命令或INSERT(或INSERT or UPDATE)命令的结果集中使用WHERE子句WHERE子句限定或取消查询选择的特定行。...SQLDisplay模式下执行解析; 逻辑或ODBC模式下,将整数与字符串进行比较将返回null`。 要比较字符串字段和包含单引号的字符串,请使用双引号。...条件表达式中指定日期或时间,可能由于SQL模式与日期或时间格式不匹配,或由于无效的日期或时间而发生错误。 WHERE子句条件表达式必须使用与当前模式相对应的日期或时间格式。...要最优地选择这个,应该指定WHERE Home_State=(('MA'))。 嵌入式SQL或视图定义不应使用此语法。 嵌入式SQL或视图定义,总是使用离群选择,不需要特殊编码。...动态SQL查询WHERE子句会自动针对空离群进行优化。 例如,WHERE FavoriteColors IS NULL这样的子句

    2.9K20

    MySQL-Select语句高级应用

    只有当所有的子条件都为true,and才返回true。否则返回false或null or 逻辑或。只要有一个子条件为true,or就返回true。否则返回false或null not 逻辑非。...默认 DEsc 执行降序排序 使用方法 ORDER BY子句一般SELECT语句的最后面 1.3.2 order by 示例 【示例一】Order by基本使用 SELECT * FROM city...说明:NULL的排序     MySQL,把NULL值当做一列的最小对待。     因此,升序排序时,它出现在最前面。 1.4 LIMIT子句 特点说明: MySQL特有的子句。...它是SELECT语句中的最后一个子句order by后面)。 它用来表示从结果集中选取最前面或最后面的几行。 偏移量offset的最小为0。...Having与Where的区别   where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件不能包含聚组函数使用where条件过滤出特定的行

    3.9K00

    PostgreSQL的查询简介

    结构化查询语言(SQL,几乎总是使用SELECT语句进行查询。 本指南中,我们将讨论SQL查询的基本语法以及一些更常用的函数和运算符。...了解SELECT语句 正如介绍中所提到的,SQL查询几乎总是以SELECT语句开头。查询中用SELECT指定应在结果集中返回的哪些列。查询也几乎总是包含FROM,用于指定语句将查询的表。...FROM tourneys WHERE name = 'Irma'; size ------ 7 (1 row) SQL允许使用通配符,这些WHERE子句使用时特别方便。...除了FROM和WHERE之外,最常用的查询子句之一是GROUP BY子句。它通常在您对一列执行聚合函数使用,但与另一列的匹配相关。 例如,假设您想知道有多少朋友更喜欢您制作的三个主菜的每一个。...HAVING子句被添加到SQL以提供与WHERE子句类似的功能,同时还与聚合函数兼容。将这两个条款之间的区别视为WHERE适用于个别记录,同时HAVING适用于组记录是有帮助的。

    12.4K52

    【数据库】03——初级开发需要掌握哪些SQL语句

    这与谓词的处理有区别,因为谓词null = null返回unknown。 如果元组上所有属性上取值相等,那么他们会被当做相同的元组,即使某些为空,这种方式还适用与集合的并、交、和差运算。...SQL形成分组以后才应用having子句中的谓词,因此having子句中可以使用聚集函数。...8.3 空关系测试 SQL包含一个特性,测试一个子查询的结果是否存在元组,exist结构作为参数的子查询非空返回true。...在编译并不能总是可以判断一个子查询返回结果是否有多个元组,如果一个子查询执行后其结果中有不止一个元组,则会产生一个运行时错误。 从技术上将标量子查询仍然是关系。...但是当在表达式中使用标量子查询,它出现的位置是期望单个出现的地方,SQL就该从该关系包含单个属性的单个元组隐式的取出相应的,并返回

    3.5K31

    你真的会玩SQL吗?之逻辑查询处理阶段

    也就是说, unknown只能取true和false里面的一个, 但是unknown的相反还是unknown.如: ON、WHERE和HAVING做过滤条件, unknown看做false;...第四步WHERE: 由于此刻没有分组, 也没有执行select所以, where子句中不能写分组函数, 也不能使用表的别名....Group by子句中可以使用函数, Sql 2000一旦使用函数, 其后面的步骤将都不能处理, 而在 Sql2005没有这个限制. 第六步不常用, 略过....第八步SELECT: 如果包含Group By子句, 那么第5步后将只能使用Group By子句中出现的列, 如果要使用其他原始列则, 只能使用函数....如果定义了Distinct子句, 则只能排序上一步返回的表VT9, 如果没有指定Distinct子句, 则可以排序不再最终结果集中的列.

    1.4K70

    SQL高级查询方法

    左向外部联接的结果集包括 LEFT OUTER 子句中指定的左表的所有行,而不仅仅是联接列所匹配的行。如果左表的某一行右表没有匹配行,则在关联的结果集行,来自右表的所有选择列表列均为空。...将返回右表的所有行。如果右表的某一行左表没有匹配行,则将为左表返回。 FULL JOIN 或 FULL OUTER JOIN 完整外部联接将返回左表和右表的所有行。...当某一行另一个表没有匹配行时,另一个表的选择列表列将包含空。如果表之间有匹配行,则整个结果集行包含基表的数据。 交叉联接 交叉联接将返回左表的所有行。左表的每一行均与右表的所有行组合。...使用 UNION 运算符需遵循下列准则: 在用 UNION 运算符组合的语句中,所有选择列表的表达式(如列名称、算术表达式、聚合函数等)数目必须相同。...不需要常规使用视图替换视图,也就是说,不必将定义存储元数据。 启用按从标量嵌套 select 语句派生的列进行分组,或者按不确定性函数或有外部访问的函数进行分组。

    5.7K20
    领券