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和空值都统计上)

mysql判断类型 mysql判断值是否为null_数据类型


mysql判断类型 mysql判断值是否为null_mysql 结果判断_02


mysql判断类型 mysql判断值是否为null_数据类型_03


mysql判断类型 mysql判断值是否为null_数据库_04


② 判断NULL 用IS NULL 或者 IS NOT NULL,SQL 语句函数中可以使用 ifnull() 函数来进行处理,判断空字符用 = 或者 <> 来进行处理

使用where进行查询会去除空值,如果想返回空值,则加上 字段 is null ,如下所示

mysql判断类型 mysql判断值是否为null_数据库_05


mysql判断类型 mysql判断值是否为null_字段_06



③ 对于MySQL特殊的注意事项,对于timestamp数据类型,如果往这个数据类型插入的列插入NULL值,则出现的值是NULL。插入空值,则会出现 ‘0000-00-00 00:00:00’5 数据库中的null 值和空字符串在前端的表现形式

mysql判断类型 mysql判断值是否为null_数据库_07


mysql判断类型 mysql判断值是否为null_数据类型_08


mysql判断类型 mysql判断值是否为null_mysql 结果判断_09


① 首先在数据库中任何类型的值都可以被指定为null 值,insert 未填入的值都null值,例如上面的sidx 值

② 只有varchar类型的数据可以填 空格(也就是空字符串) 如上面的name值

③ datetime类型的字段输入空格 直接转为0000-00-00 00:00:00

④ 空格字符串返回给前端时 “”如下所示

mysql判断类型 mysql判断值是否为null_mysql 结果判断_10


⑤ null返回给前端解析的是null,如下所示

mysql判断类型 mysql判断值是否为null_字段_11


mysql判断类型 mysql判断值是否为null_数据库_12