首页
学习
活动
专区
工具
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匹配查询方法

38640

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.3K20

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.5K20

那些年我们写过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  | 要返回列或表达式

99120

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 | 要返回列或表达式

78420

《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集合运算实现

1.9K51

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

学数据库还不会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 不包括在计算中。

94930

数据库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 不包括在计算中。

79110

关于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

2.9K40

【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

21K31

默认用户名和密码(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.2K10

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

数据库mysql执行顺序(sql语句大全实例教程)

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

1.5K20

HQL语句大全

(其他猫配偶) 实际上, 你可以更简洁用以下查询语句表达相同含义: select cat.mate from Cat cat查询语句可以返回任何类型属性,包括返回类型某种组件(Component...复合路径表达式使得where子句非常强大,考虑如下情况: from Cat cat where cat.mate.name is not null查询将被翻译成为一个含有表连接(内连接)SQL查询...如果你打算写像这样查询语句 from Foo foo  where foo.bar.baz.customer.address.city is not nullSQL中,你达此目的将需要进行一个四表连接查询...与is not null可以被用来测试空(null)....注意你能用到大多数查询比这些要简单多! 下面的查询对于某个特定客户所有未支付账单,在给定给最小总价值情况下,返回订单id,条目的数量和总价值, 返回按照总价值结果进行排序。

2.5K50
领券