![]() |
1
k9982874 104 天前
null 和‘’是两种类型,不能互相替换,在数据库中的存储方式及表意都不一样
根据实际业务需求来 |
![]() |
2
lizhenda 104 天前
如果定义为 null 在 go 还要特殊处理下,直接 not null 默认为空字符串即可。
|
3
Configuration 104 天前 ![]() 我们都是 not null default '',null 值在处理 != 或 not like 的时候跟实际需求不一致
|
![]() |
4
qloog 104 天前
用的更多的是:not null default '',在代码里里更方便做各种判断
|
5
Joker520 104 天前
直接空字符串''
|
6
yinmin 104 天前 via iPhone
null 和’’是 2 个概念,例如填表字段,’’表示完成填表操作了,提交空字符串; null 表示没有完成填表操作。
类似 decimal 的 null 和 0 ,考试成绩填 0 表示考了 0 分,填 null 表示缺考。 有些字段不允许空缺,可以不要 null 。具体根据实际业务场景来确认是否要 null 。 |
![]() |
7
june4 104 天前
null 还对唯一索引不好使,特别是有联合索引用了 null 时很容易中坑
|
![]() |
8
me262 104 天前
not null default ''
|
![]() |
9
everhythm 104 天前
not null default ''
大部分数据库应该都不鼓励用 null 了,在索引、计算、排序、连表的时候 null 会有各种各样的问题。 go 里面大部分变量初始化都给了默认值,用 null 的话还得写 is null ,漏写就比较蛋疼。 |
![]() |
10
codehz 104 天前
null 可以用在联合 unique 约束中表示空缺(因为比较的时候会忽略 null ),但要记得使用触发器或者静态约束来避免插入全空的值
这种模式在表达一些很特殊的关系的时候有奇效 |
12
CodeCodeStudy 103 天前 ![]() 我总结了 mysql 字段不使用 null 的理由
1 、比如文章点击量加 1 ,column_name = column_name + 1 ,如果把字段设成 null ,并且插入数据时没指明 column_name = 0 ,那么+1 操作不起作用; 2 、count(column_name)时,null 的列不包含在内,count(*)则包含 null 的列在里面 3 、计算多列时,如 SELECT id, click1+click2 as click FROM `foo` 如果两个点击量有一个为 null ,那么相加结果就是 null 4 、如果有比较条件,比如 where < 10 ,如果为 null 的话则不包含在内 5 、min(column_name), max(column_name)如果字段有值,则用值比较,如果字段没有值,都是 null 的时候,则为 null 总结:不能运算,不能比较,慢 对于字符串来说,大多数情况下还是用空字符串 |
13
changz 103 天前 via Android
可以类比下 optional
|
14
kingcanfish 96 天前
就问一个问题 比如说现在表要加一列, 现在数据很多, 考虑性能问题 新加的列设置成 null 还是 not null
|