None、Null与空字符''什么区别

1,461 阅读2分钟

1. None

表示空无一物,啥也没有存储。

  • 编程语言里采用None
    比如在python中None不是一个保留关键字,只是NoneType对象的一个实例。

    空就是空,它不是整型,不是浮点型,也不是字符串,就是一个NoneType。所以在使用len(None)时候会报错,因为NoneType没有字符串才有的方法。

In [71]: type(None)                                                             
Out[71]: NoneType

In [72]: len(None)                                                              
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-72-96b07938784c> in <module>
----> 1 len(None)

TypeError: object of type 'NoneType' has no len()
  • 数据库查询中用Null,表示的含义相同

2. Null

表示空无一物,啥也没有存储。

  • 数据库中才使用Null
    在数据库查询时Null就等同于python中的None,表示什么也没有,是个空值,不是空字符串。常见的就是:
--筛选name字段不为空的记录
select * 
from table_A
where name is not Null
  • Python中没有Null这个东西
    在直接使用Null时,会报错提示Null is not defined。
In [68]: type(Null) 
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-68-fe48179a953c> in <module>
----> 1 type(Null)

NameError: name 'Null' is not defined

In [69]: type('Null')                                                           
Out[69]: str

In [70]: len('Null')                                                            
Out[70]: 4

3. 空字符’’

有存储个东西,是空字符串,空字符串有哪些特征呢?

  • 长度为0
  • 类型为string
    以下是在python中验证了空字符串的特点。
In [66]: len('')                                                                
Out[66]: 0

In [67]: type('')                                                               
Out[67]: str

值得注意的是
在数据库表中如果存在空字符串,进行表关联操作时可能会出现空值放大的效果,导致表关联后出现了记录数超多。所以在数据库表或dataframe关联时,需要特别处理空字符串这种情形。

现在是不是头脑清醒了许多~

关注微信公众号:数据分析师之家
在这里插入图片描述