LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

sql null和(‘ ‘)和(‘‘)的区别

liguoquan
2025年10月9日 15:53 本文热度 122
:sql null和(‘ ‘)和(‘‘)的区别


    1 背景

    NULL也就是字段值为空,空值也就是字段中存储空字符(‘’),要注意空字符(‘’)和含有空格的字符是不一样的(’ ')

    2 区别

    2.1 占用空间区别

    select length(NULL), length(''), Length(' '),length(0);
    --->NULL,0,1,1
    
    • 1
    • 2

    从上面看出空值(‘’)的长度是0,是不占用空间的;含有一个空格的(’ ')长度为1,是占用空间的;而NULL长度是NULL,实际上它也是占用空间的

    通俗的讲:空值就像是一个真空转态杯子,什么都没有,而NULL值就是一个装满空气的杯子,虽然看起来都是一样的,但是有着本质的区别。

    2.2 插入/查询方式区别

    创建一个表,tb_test

    CREATE TABLE `tb_test` (
    `one` varchar(10) NOT NULL,
    `two` varchar(255) DEFAULT NULL )
    ENGINE=InnoDB DEFAULT CHARSET=utf8; 
    
    • 1
    • 2
    • 3
    • 4

    插入进行验证:
    – 全部插入 NULL,失败

    mysql> INSERT tb_test VALUES (NULL,NULL); 
    1048 - Column 'one' cannot be null
    
    • 1
    • 2

    – 全部插入 空值,成功

    mysql> INSERT tb_test VALUES ('','');
     Query OK, 1 row affected
    
    • 1
    • 2

    模拟数据:

    INSERT tb_test VALUES (1,NULL);
    INSERT tb_test VALUES ('',2);
    INSERT tb_test VALUES (3,3); 
    
    • 1
    • 2
    • 3

    空值字段:
    – 使用 is null/is not null

    mysql> SELECT * FROM tb_test where one is NULL;
    Empty
     mysql> SELECT * FROM tb_test where one is not NULL;
    | one | two  |
    | 1   | NULL | 
    |     | 2    | 
    | 3   | 3    |
    -- 使用 = 、!=
    mysql> SELECT * FROM tb_test where one = '';
    | one | two |
    |     | 2   |
    mysql> SELECT * FROM tb_test where one != '';
    | one | two  |
    | 1   | NULL |
    | 3   | 3    |
    NULL值字段:
    -- 使用 is null/is not null
    mysql> SELECT * FROM tb_test where two is not NULL;
    | one | two |
    |     | 2   | 
    | 3   | 3   |
    mysql> SELECT * FROM tb_test where two is NULL;
    | one | two |
    | 1   | NULL|
    -- 使用 = 、!=
    mysql> SELECT * FROM tb_test where two = '';
    Empty set
    mysql> SELECT * FROM tb_test where two != '';
    | one | two |
    |  2 | | 3 | 3 |
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47

    如果要单纯查NULL值列,则使用 is NULL去查,单纯去查空值(‘’)列,则使用 =‘’,并且='‘与= ’ ‘结果一样。
    建议查询方式:NULL值查询使用is null/is not null查询,而空值(’’)可以使用=或者!=、<、>等算术运算符

    3 总结

    1、空值不占空间,NULL值占空间。当字段不为NULL时,也可以插入空值。
    2、当使用 IS NOT NULL 或者 IS NULL 时,只能查出字段中没有不为NULL的或者为 NULL 的,不能查出空值。
    3、判断NULL 用IS NULL 或者 is not null,SQL 语句函数中可以使用IFNULL()函数来进行处理,判断空字符用 =‘‘或者<>’‘来进行处理。
    4、在进行count()统计某列的记录数的时候,如果采用的NULL值,会别系统自动忽略掉,但是空值(’’)是会进行统计到其中的。
    5、实际到底是使用NULL值还是空值(‘’),根据实际业务来进行区分。int类型尽量默认为’0’


    该文章在 2025/10/9 15:53:01 编辑过
    关键字查询
    相关文章
    正在查询...
    点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
    点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
    点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
    点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
    Copyright 2010-2025 ClickSun All Rights Reserved