1 在数据库中NULL表示 未知的、不确定的。
NULL不等于零或空格,NULL 值不视作大于、小于或等于任何其它值。因此不能与其他变量直接进行比较。判断某列或者变量为 NULL 是只能用IS(NOT) NULL 去判断他的返回值是 true 还是 false。
① 一个NULL不与其他任何值相等;一个NULL不与其他任何值不等;
② 在对一个NULL值应用函数时,一般都会得到一个NULL值作为结果。
③ 一般而言,只要执行涉及一个或多个NULL值的比较操作,那个比较的结果也是NULL值,它不同于TRUE或FALSE,因而这样的比较除了失败,没有任何帮助作用。
2 在数据库中NULL表示未知的,但是其占用空间,不走索引
3 NULL参与排序时总是作为最小值存在,即ORDER BY COL ASC时COL为NULL的行在最前面,反之在最后面。所以升序排列并把null 放在最后一般用下面的方式
<select id="queryPage" resultType="io.sportii.common.entity.pension.ServerEntity">
SELECT
s.id,
sc.`name` AS server_category_name,
s.`name`,
sb.`name` AS business_name,
s.display,
(select d.value from sys_dict d where d.type='isdisplay' and d.code=s.display) as display_name,
s.create_date,
s.sidx
FROM
pension_server AS s
INNER JOIN pension_server_category AS sc ON s.server_category_id = sc.category_id
INNER JOIN sys_business AS sb ON s.business_id = sb.id
<where>
<if test="serverCategoryName!=null and serverCategoryName!=''">
sc.`name` = #{serverCategoryName}
</if>
</where>
ORDER BY
<choose>
<when test="sidx != null and '' != sidx">
${sidx} ${order}
</when>
<otherwise>
isnull(s.sidx),s.sidx,s.create_date desc
</otherwise>
</choose>
</select>
4 空值 和null值之间的差异:
① 在进行count()统计某列的记录数的时候,如果采用的NULL值,会被系统自动忽略掉,但是空值是会进行统计到其中的。(count(*)会将NULL和空值都统计上)
② 判断NULL 用IS NULL 或者 IS NOT NULL,SQL 语句函数中可以使用 ifnull() 函数来进行处理,判断空字符用 = 或者 <> 来进行处理
使用where进行查询会去除空值,如果想返回空值,则加上 字段 is null ,如下所示
。
③ 对于MySQL特殊的注意事项,对于timestamp数据类型,如果往这个数据类型插入的列插入NULL值,则出现的值是NULL。插入空值,则会出现 ‘0000-00-00 00:00:00’5 数据库中的null 值和空字符串在前端的表现形式
① 首先在数据库中任何类型的值都可以被指定为null 值,insert 未填入的值都null值,例如上面的sidx 值
② 只有varchar类型的数据可以填 空格(也就是空字符串) 如上面的name值
③ datetime类型的字段输入空格 直接转为0000-00-00 00:00:00
④ 空格字符串返回给前端时 “”如下所示
⑤ null返回给前端解析的是null,如下所示