对于空白的 MySQL 数据,一般习惯是留 null,还是填个空字符串?

2017-12-05 23:07:08 +08:00
 rogwan
有的数据可能为空白,一般是:
1 懒得管,自动 null
2 存个 '' 空字符串
3 留个 0 (整数 /字符)占个坑

大家平时哪个习惯多?
8134 次点击
所在节点    MySQL
16 条回复
realpg
2017-12-05 23:18:25 +08:00
基本除非特殊情况,我的 mysql 的任何列都是禁止 null 的……
liuyao729
2017-12-05 23:19:46 +08:00
0
zhx1991
2017-12-05 23:22:05 +08:00
如果是字符串类型就是空串, 如果是数字类型就是 0 或者 -1

千万别用 null, 坑到姥姥家
est
2017-12-05 23:22:43 +08:00
当然是留一个字符串 "Null"
sinv
2017-12-05 23:59:01 +08:00
@est #4 +1 没毛病
whx20202
2017-12-06 00:01:29 +08:00
在不同的数据库 /版本 /引擎下,null 经常在排序,count,索引需要额外注意,所以建议用默认值
kunluanbudang
2017-12-06 00:10:05 +08:00
可能几乎是共识了

禁止任何 NULL, 一般留一个表示「不合法情况」的默认值, 如 "" 0 什么的
nondanee
2017-12-06 00:35:22 +08:00
为了 AVG()会用 null,其他情况""😂
yangqi
2017-12-06 00:37:13 +08:00
具体要根据字段含义来,空白和 Null 含义是不一样的,Null 表示该字段没有数据,空白则表示有数据,是空白。
love2075904
2017-12-06 09:39:49 +08:00
@yangqi 同意,不过如果该列会参与排序就有点坑爹了。
paragon
2017-12-06 10:05:30 +08:00
null 和“”的语义是不一样的~
jjx
2017-12-06 10:16:58 +08:00
如果该字段要被查询, 就别用空, 否则 查询 field is null or field='' , 这个是不能走查询优化的
gouchaoer
2017-12-06 10:31:38 +08:00
avg 也可以用 case when 来避免 null 吧,如果你用-1 之类的来表示没有值啥的
eslizn
2017-12-06 10:34:56 +08:00
还是看需求,而不是一味的禁止 null,禁止 join 等等,比如某个可选的唯一字段,可为 null 是最好的选择
Erroad
2017-12-06 11:01:14 +08:00
NOT NULL DEFAULT ""
metrxqin
2017-12-11 11:07:14 +08:00
取决于需求,如果业务属性存在以下三种情况:
1,可能压根不存在;
2,存在但为空;
3,存在不为空,则使用 NULL 作为默认值。 比如一个人的宠物名,存在压根没有宠物的情况,有宠物但没有起名。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/412310

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX