问答 / 0 / 2 / 创建于 2年前
数据库值不存在的时候应该设置为null还是空?数据库字段应该用单数还是负数?
没有通用的方案,看不同数据类型和应用场景。
数字相关,这种就应该使用 0,否则当你有时候取出来忘了转换直接计算时就可能出现 1+null ,有可能拿到一个 NAN。
时间相关的,应该允许为 null。
字符串相关的又分两种,一种是允许有默认值,一种不允许有默认值。
比如 text 相关的就不允许有默认值,而 varchar 等就允许,但是字符串又可能为空,如果这时候允许 null 就会产生两种空,一种是空字符一种是 null 值,就会产生歧义,所以对于这种场景,就更加建议使用空字符串,在不支持默认值的类型上,SQL 中手动加上空字符串,而不是设置允许 null。
其他如 JSON ,这种虽然看起是字符串,也不允许有默认值,那就应该按照约定允许使用 null。
我要举报该,理由是:
高认可度评论:
没有通用的方案,看不同数据类型和应用场景。
数字相关,这种就应该使用 0,否则当你有时候取出来忘了转换直接计算时就可能出现 1+null ,有可能拿到一个 NAN。
时间相关的,应该允许为 null。
字符串相关的又分两种,一种是允许有默认值,一种不允许有默认值。
比如 text 相关的就不允许有默认值,而 varchar 等就允许,但是字符串又可能为空,如果这时候允许 null 就会产生两种空,一种是空字符一种是 null 值,就会产生歧义,所以对于这种场景,就更加建议使用空字符串,在不支持默认值的类型上,SQL 中手动加上空字符串,而不是设置允许 null。
其他如 JSON ,这种虽然看起是字符串,也不允许有默认值,那就应该按照约定允许使用 null。
没有通用的方案,看不同数据类型和应用场景。
数字相关,这种就应该使用 0,否则当你有时候取出来忘了转换直接计算时就可能出现 1+null ,有可能拿到一个 NAN。
时间相关的,应该允许为 null。
字符串相关的又分两种,一种是允许有默认值,一种不允许有默认值。
比如 text 相关的就不允许有默认值,而 varchar 等就允许,但是字符串又可能为空,如果这时候允许 null 就会产生两种空,一种是空字符一种是 null 值,就会产生歧义,所以对于这种场景,就更加建议使用空字符串,在不支持默认值的类型上,SQL 中手动加上空字符串,而不是设置允许 null。
其他如 JSON ,这种虽然看起是字符串,也不允许有默认值,那就应该按照约定允许使用 null。