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

MySQL 字段 NULL 5大坑,99%人踩过

*)和count(name)不一样,即当使用是 count(name) 查询时,丢失了两条 NULL 数据。...解决方案要解决以上问题,只要修改条件,将姓名不等于Java或者是空查出来即可,执行 SQL 如下:执行结果如下:可以看出10条数据都查询出来了,这个结果符合我们正常预期。...4.导致空指针异常当我们使用一些函数,比如求和函数sum(column) 或者平均值之类函数,如果所求字段中有空,所求会为空而非0。...为了演示这个问题,首先我们先构建一张表和一些测试数据:表中原始数据如下:接下来我们使用 sum 查询,执行以下 SQL查询执行结果如下:当查询结果 NULL 而非 0 时,就可以导致空指针异常。...解决空指针异常可以使用ifnull()对空进行处理来避免空指针异常:查询执行结果如下:5.增加了查询难度当字段中有了空,对于null或者非null查询难度增加了,必须使用与null匹配查询方法

74540

PostgreSQL基础知识整理

VALUES子句或查询都与显式或隐式列列表从左到右。 如果要添加表中所有列,可能不需要在SQL查询中指定列(次)名称。但要确保表中是在相同顺序顺序。...JOIN: 即使左表中没有匹配,也从右表返回所有的行; FULL JOIN: 只要其中一个表中存在匹配,返回行。...GROUP BY可以用来执行相同功能在子查询ORDER BY。 子查询返回多于一行只能用于使用多值运算符,如IN,EXISTS,IN,ANY / SOME,ALL运算符。...而IN引导查询只能返回一个字段 EXISTS : 强调是是否返回结果集,不要求知道返回什么,IN则需要知道返回字段。...这些表达式必须都可以转换成一个普通数据类型,它将会是结果类型。列表中NULL将被忽略。只有所有表达式结果都是 NULL 时候,结果才会是 NULL

3.5K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    SQL聚合函数 SUM

    SQL聚合函数 SUM 返回指定列之和聚合函数。...通常,表达式查询返回多行中字段名称(或包含一个或多个字段名称表达式)。 SUM可以在引用表或视图SELECT查询或子查询中使用。...SUM(DISTINCT BY(col2) col1)只汇总col2不同(唯一)记录中col1字段。 但是请注意,不同col2可能包含一个单独NULL。...对于数据类型DOUBLE表达式SUM返回数据类型DOUBLE表达式。 对于所有其他数字数据类型,SUM返回数据类型numeric。 SUM返回精度18。...在派生SUM聚合函数值时,数据字段中NULL将被忽略。 如果查询没有返回任何行,或者返回所有行数据字段NULL, SUM返回NULL

    1.4K20

    MongoDB初级入门

    文档 删除集合 db.collection.drop() db.user.drop() : 删除user集合 文档操作 一个集合中可以包含多条文档,一个文档相当于SQL一条数据,这里文档是JSON...如果count大于数组中元素数量,该查询返回数组中所有元素。...默认 false. sparse Boolean 对文档中不存在字段数据不启用索引;这个参数需要特别注意,如果设置true的话,在索引字段中不会查询出不包含对应字段文档.。...null,max_age:{$max:"$age"}}}]) : 求出年龄最大的人信息 { "_id" : null, "max_age" : 40 } 常用聚合 表达式 描述 实例 $sum 计算总和...$skip:在聚合管道中跳过指定数量文档,并返回余下文档。 $unwind:将文档中某一个数组类型字段拆分成多条,每条包含数组中一个。 $group:将集合中文档分组,可用于统计结果。

    1.2K50

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

    7 聚集函数 聚集函数是以输入并返回单个函数,SQL标准提供了五个标准聚集函数。平均值avg,最小min,最大max,总和sum和计数count。...7.4 对空和布尔聚集 考虑如下查询: select sum(salary) from instructor; 如果有教师薪资是nullSQL将忽略其。...8.3 空关系测试 SQL包含一个特性,测试一个子查询结果是否存在元组,exist结构在作为参数查询非空时返回true。...8.7 标量子查询 SQL允许子查询出现在返回单个表达式能够出现任何地方,只要该子查询返回一个包含单个属性元组,这样查询成为标量子查询。举个栗子,列出所有的系以及每个系中教师总数。...但是当在表达式中使用标量子查询时,它出现位置是期望单个出现地方,SQL该从该关系中包含单个属性单个元组中隐式取出相应,并返回

    3.5K31

    学习SQL【8】-谓词和CASE表达式

    谓词 什么是谓词 谓词就是返回真值函数。对于通常函数来说,返回有可能是数字、字符串和日期等,但是谓词返回全部是真值。这也是谓词和函数最大区别。...如果不想让结果包含临界,那就必须使用。...、IS NOT NULL—判断是否NULL 为了选取某些NULL数据,不能使用=,而只能使用特定谓词IS NULL。...如果存在这样记录返回真(TRUE),如果不存在这样记录返回假(FALSE)。EXISTS(存在)谓词主语是“记录”。...所谓求值,就是要调查该表达式真值是什么,如果结果真(TRUE),那么返回THEN子句中表达式,CASE表达式执行到此为止。如果结果不为真,那么跳转到下一条WHEN子句求值之中。

    2.3K60

    SQL聚合函数 VARIANCE, VAR_SAMP, VAR_POP

    描述 这三个方差聚合函数在丢弃NULL返回表达式统计方差。 也就是说,从数据集平均值变化量,表示一个正数。 返回越大,数据集变化就越大。...如果数据集只包含一个(没有可能可变性),则返回0。 如果数据集没有,则返回NULL。...如果数据集中所有都具有相同(无可变性),则返回0。 如果数据集只包含一个(没有可能可变性),则返回NULL。 如果数据集没有,则返回NULL。 使用与方差相同变量计算。...如果数据集中所有都具有相同(无可变性),则返回0。 如果数据集只包含一个(没有可能可变性),则返回0。 如果数据集没有,则返回NULL。...如果查询没有返回行,或者返回所有行数据字段NULL,则返回NULL。 与所有聚合函数一样,统计方差函数可以采用一个可选DISTINCT子句。

    1.6K20

    那些年我们写过T-SQL(中篇)

    中篇重点在于,在复杂情况下使用表表达式查询,尤其是公用表表达式(CTE),也就是非常方便WITH AS XXX应用,在SQL代码,这种方式至少可以提高一倍工作效率。...本系列包含上中下三篇,内容比较驳杂,望大家耐心阅读: 那些年我们写过T-SQL(上篇):上篇介绍查询基础,包括基本查询逻辑顺序、联接和子查询 那些年我们写过T-SQL(中篇):中篇介绍表表达式、...表表达式Table Expression是一种命名查询表达式,代表一个有效关系表与其他表使用类似。SQL Server支持4种类型表达式:派生表、公用表表达式、视图等。...开窗函数 其根据基础查询行子集计算,子集中每行计算一个标量结果,行子集被称为"窗口",通过OVER字句进行相关操作,简单来说以前对分组查询操作GROUP BY粒度仅限于一个聚合函数(子查询操作也类似...3个阶段:第一个阶段GROUP BY empid分组阶段;第二阶段扩展阶段通过在SELECT字句中使用针对目标列CASE表达式;最后一个阶段聚合阶段通过对每个CASE表达式结果聚合,例如SUM

    3.7K70

    Python数据库操作 DQL-MySQL数据库查询sql#学习猿地

    -- 问题出在 sql 计算顺序上,sql会优先处理and条件,所以上面的sql语句变成了 -- 查询变成了年龄22不管性别,或者年龄 25女生 -- 如何改造sql符合我们查询条件呢?...> > 可以使用like语句进行某个字段模糊搜索, > > 例如: 查询 name字段中包含数据 ```mysql -- like 语句  like某个确定 和。...%代表任意个任意字符   -- 查询name字段中包含   select * from users where name like '%五%';   -- 查询name字段中最后一个字符 ...,如果指定列上出现了NULL,那么NULL这个数据不会被统计 -- 假设有下面这样一张表需要统计 +------+-----------+------+--------+-----------...| 是否必须          | | -------- | -------------------------------- | ------------------ | | select  | 要返回列或表达式

    1K20

    Python数据库操作 DQL-MySQL数据库查询sql#学习猿地

    -- 问题出在 sql 计算顺序上,sql会优先处理and条件,所以上面的sql语句变成了 -- 查询变成了年龄22不管性别,或者年龄 25女生 -- 如何改造sql符合我们查询条件呢?...> > 可以使用like语句进行某个字段模糊搜索, > > 例如: 查询 name字段中包含数据 ```mysql -- like 语句 like某个确定 和。...%代表任意个任意字符 -- 查询name字段中包含 select * from users where name like '%五%'; -- 查询name字段中最后一个字符 ...,如果指定列上出现了NULL,那么NULL这个数据不会被统计 -- 假设有下面这样一张表需要统计 +------+-----------+------+--------+-----------...| 是否必须 | | -------- | -------------------------------- | ------------------ | | select | 要返回列或表达式

    79920

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

    :将返回结果TRUE第一个WHEN逻辑表达式所关联THEN子句中指定。...如果没有任何WHEN表达式结果TRUE,CASE表达式返回ELSE子句中出现。...非NULL值得表达式返回0,因此,它们会排在NULL表达式返回1)前面。如上所示将CASE表达式作为第一个拍序列,并把region列指定为第二个拍序列。...MSSQL中支持4种类型表达式: 3.1 派生表   派生表(也称为表子查询)是在外部查询FROM子句中定义只要外部查询一结束,派生表也就不存在了。   ...这里需要说是,集合运算对行进行比较时,认为两个NULL相等,所以返回该行记录。 4.3 EXCEPT 差集运算 ?   在T-SQL中,集合之差使用EXCEPT集合运算实现

    2K51

    学数据库还不会Select,SQL Select详解,单表查询完全解析?

    查询操作是SQL语言中很重要操作,我们今天就来详细学习一下。 一、数据查询语句格式 SELECT [ALL|DISTINCT] [, ....]...这里是说,我们通过ESCAPE语句将\定义换码字符(可以理解转义字符) 类型4: 涉及空查询 谓词:IS NULL 或 IS NOT NULL 而且 “IS” 不能用 “=” 代替。...Spho 韩六 NULL 赵八 NULL 类型5: 多重条件查询 逻辑运算符: AND:且 连接前后两个条件都成立时表达式真 OR:或 连接前后表达式有一个真时表达式真 AND优先级大于...) 函数返回指定列数目(NULL 不计入): SELECT COUNT(column_name) FROM table_name SQL COUNT(*) 语法 COUNT(*) 函数返回表中记录数...计算平均值 AVG 函数返回数值列平均值。NULL 不包括在计算中。

    96330

    SQL 聚合查询

    SQL 存在一种很特殊类型 NULL,如果 COUNT 指定了具体列,则统计时会跳过此列 NULL 行,而 COUNT(*) 由于未指定具体列,所以就算包含NULL,甚至某一行所有列都为...NULL,也都会包含进来。...当然,如果同时计算 MAX、MIN,那么此时 id 也只返回第一条数据,因为这个查询结果对应了复数行: SELECT MAX(cost), MIN(cost), id FROM test -- id...举个例子,查询每个国家 GDP 总量: SELECT COUNT(GDP) FROM amazing_table GROUP BY country 返回结果就会按照国家进行分组,这时,聚合函数变成了在组内聚合...总结 聚合函数 + 分组可以实现大部分简单 SQL 需求,在写 SQL 表达式时,需要思考这样表达式是如何计算,比如 MAX(c1), c2 是合理,而 SUM(c1), c2 这个 c2 就是无意义

    2.4K31

    数据库SQL语言从入门到精通--Part 6--单表查询(快来PICK)

    查询操作是SQL语言中很重要操作,我们今天就来详细学习一下。 一、数据查询语句格式 SELECT [ALL|DISTINCT] [, ....]...这里是说,我们通过ESCAPE语句将\定义换码字符(可以理解转义字符) 类型4: 涉及空查询 谓词:IS NULL 或 IS NOT NULL 而且 “IS” 不能用 “=” 代替。...Spho 韩六 NULL 赵八 NULL 类型5: 多重条件查询 逻辑运算符: AND:且 连接前后两个条件都成立时表达式真 OR:或 连接前后表达式有一个真时表达式真 AND优先级大于...) 函数返回指定列数目(NULL 不计入): SELECT COUNT(column_name) FROM table_name SQL COUNT(*) 语法 COUNT(*) 函数返回表中记录数...计算平均值 AVG 函数返回数值列平均值。NULL 不包括在计算中。

    82210

    关于sql和MySQL语句执行顺序(必看!!!)

    (7)having (8) select (9) distinct (10) order by 从这个顺序中我们不难发现,所有的 查询语句都是从from开始执行,在执行过程中,每个步骤都会为下一个步骤生成一个虚拟表...第六步:group by 子句将中唯一组合成为一组,得到虚拟表vt5。如果应用了group by,那么后面的所有步骤都只能得到vt5列或者是聚合函数(count、sum、avg等)。...原因在于最终结果集中只为每个组包含一行。这一点请牢记。 第七步:应用cube或者rollup选项,vt5生成超组,生成vt6. 第八步:应用having筛选器,生成vt7。...对表进行排序查询可以返回一个对象,这个对象包含特定物理顺序逻辑组织。这个对象就叫游标。正因为返回是游标,那么使用order by 子句查询不能应用于表表达式。...跳过 对比了一下,mysql和sql执行顺序基本是一样, 标准顺序 SQL 语句: select 考生姓名, max(总成绩) as max总成绩 from tb_Grade where

    3K40

    2024Mysql And Redis基础与进阶操作系列(5)作者——LJS

    ; 比较运算符: 比较运算符用来对表达式左边操作数和右边操作数进行比较,比较结果真则返回1,比较结果假则返回0,其他情况则返回NULL。...select greatest(10, null, 30); -- null 逻辑运算符: 逻辑运算符主要用来判断表达式真假,在MySQL中,逻辑运算符返回结果1、0或者NULL 位运算符:...() 统计指定列不为NULL记录行数; sum() 计算指定列数值和,如果指定列类型不是数值类型,那么计算结果0 max() 计算指定列最大,如果指定列是字 select sum(price...,它是对一列进行计算,然后返回一个单一;另外聚合函数会忽略空。...而如果参数某字段,不统计含null记录个数。 2、sum和avg函数对null处理 这两个函数忽略null存在,就如该条记录不存在一样。

    25030

    【Mysql-3】条件判断函数-CASE WHEN、IF、IFNULL详解

    END 解释一下,语句中condition是条件判断,如果该判断结果true,那么CASE语句将返回result,否则返回result2,如果没有ELSE,则返回null。...2 IF IF函数也能通过判断条件来返回特定,它语法如下: IF(expr,result_true,result_false) expr是一个条件表达式,如果结果true,则返回result_true...3 IFNULL 在Java程序中调用sql语句时,如果返回结果是null,是非常容易引发一些意外情况。 ?...因此,我们希望在SQL中做一些处理,如果查询结果是null转换为特定,这就要用到Mysql中IFNULL函数。...FROM goods WHERE name='light'; 但使用IFNULL语句,如果where条件中name是不存在,那么仍将返回null,例如: -- 返回结果:null SELECT

    27.3K31

    默认用户名和密码(SQL)

    但是,如果SELECT执行聚合操作(例如:SELECT SUM(Myfield)),则聚合操作成功,即使myfield中没有数据,也会发出SQLCODE=0;在这种情况下,SUM返回NULL,%ROWCOUNT...SQLCODE=100表示SQL操作成功,但没有找到可操作数据。发生这种情况原因有很多。对于SELECT,这些包括:指定表不包含数据;表不包含满足查询条件数据;或者行检索已到达表最后一行。...但是,可以为该字段创建多个没有(NULL)记录。 DEFAULT默认:必须指定一个,否则 IRIS会为每个记录中此字段提供一个默认(接受空字符串)。...默认可以是NULL、空字符串或适用于该数据类型任何其他。 UNIQUE NOT NULL:必须在每条记录中该字段指定唯一(可接受一个空字符串)。可用作主键。...DEFAULT NOT NULL:必须指定一个,否 IRIS会为每个记录中此字段提供一个默认(可接受空字符串)。

    5.3K10

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

    在使用聚合函数(如SUM、AVG、COUNT等)时,结果列指定别名尤其有用,因为它可以清晰地表示该列包含数据类型或含义。...distinct 在MySQL中,DISTINCT关键字用于在查询结果中返回唯一不同。当你从表中检索数据时,如果表中有重复行,并且你只希望看到每个唯一一次,那么就可以使用DISTINCT。...如果查询包含了聚合函数(如COUNT()、MAX()、MIN()、SUM()等),并且你想要基于某些列唯一来计算聚合结果,那么可能需要结合GROUP BY子句来使用,而不是直接使用DISTINCT...处理NULL函数 MySQL提供了几个函数来帮助处理NULL,如IFNULL()(或COALESCE()),它们允许你NULL指定一个替代。...返回第一个非NULL 总之,当在MySQL中编写查询并处理可能包含NULL列时,重要是要了解NULL在不同运算和函数中行为,并相应地调整你查询逻辑。

    13410

    Server层表级别对象字典表 | 全方位认识 information_schema

    即使可用空间显示0,也可以插入行,只要不需要分配新区(extends)允许插入操作。对于分区表,此仅为估计,可能不是绝对正确。...:如果存储程序函数,则该字段返回数据类型,如果存储过程,则该字段空 ROUTINE_BODY:存储程序主体内容,总是"SQL" ROUTINE_DEFINITION:存储程序具体定义...SQL_MODE:创建或更改事件时MySQL ServerSQL模式 STARTS:对于其定义中包含STARTS子句重复事件,此列包含相应DATETIME。...如果没有STARTS子句,则此列为NULL ENDS:对于其定义中包含ENDS子句重复事件,此列包含相应DATETIME。...它返回不是一个真实参数(可能是一堆字符串数据),所以ORDINAL_POSITION列记录0,且PARAMETER_NAME和PARAMETER_MODE列记录NULL,因为此时函数返回没有参数名称

    1K20
    领券