数据库字段值不存在的时候应该设置为null还是空?

数据库值不存在的时候应该设置为null还是空?
数据库字段应该用单数还是负数?

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 2

没有通用的方案,看不同数据类型和应用场景。

数字相关,这种就应该使用 0,否则当你有时候取出来忘了转换直接计算时就可能出现 1+null ,有可能拿到一个 NAN。

时间相关的,应该允许为 null。

字符串相关的又分两种,一种是允许有默认值,一种不允许有默认值。

比如 text 相关的就不允许有默认值,而 varchar 等就允许,但是字符串又可能为空,如果这时候允许 null 就会产生两种空,一种是空字符一种是 null 值,就会产生歧义,所以对于这种场景,就更加建议使用空字符串,在不支持默认值的类型上,SQL 中手动加上空字符串,而不是设置允许 null。

其他如 JSON ,这种虽然看起是字符串,也不允许有默认值,那就应该按照约定允许使用 null。

1年前 评论
tiantian10000 (楼主) 1年前

没有通用的方案,看不同数据类型和应用场景。

数字相关,这种就应该使用 0,否则当你有时候取出来忘了转换直接计算时就可能出现 1+null ,有可能拿到一个 NAN。

时间相关的,应该允许为 null。

字符串相关的又分两种,一种是允许有默认值,一种不允许有默认值。

比如 text 相关的就不允许有默认值,而 varchar 等就允许,但是字符串又可能为空,如果这时候允许 null 就会产生两种空,一种是空字符一种是 null 值,就会产生歧义,所以对于这种场景,就更加建议使用空字符串,在不支持默认值的类型上,SQL 中手动加上空字符串,而不是设置允许 null。

其他如 JSON ,这种虽然看起是字符串,也不允许有默认值,那就应该按照约定允许使用 null。

1年前 评论
tiantian10000 (楼主) 1年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!