Elias Asked: 2020-04-23 11:21:09 +0800 CST2020-04-23 11:21:09 +0800 CST 2020-04-23 11:21:09 +0800 CST 设置为 Not Null 的字段是否也应具有拒绝空字符串的约束? 772 我期望值的任何字段(如 orderNumber 或 customerNumber)我将设置为不可为空。 如果我期望该字段的值不为空,我是否也应该始终有一个不允许零长度字符串或仅空格字符串的约束? sql-server null 2 个回答 Voted David Browne - Microsoft 2020-04-23T11:43:19+08:002020-04-23T11:43:19+08:00 如果我期望该字段的值不为空,我不应该也总是有一个不允许零长度字符串或仅空格字符串的约束吗 是的。是的你应该。 启用存储空字符串是 ANSI 标准行为,但这并不意味着这是一个好主意。而且您尤其不应该在列中同时允许Null 和 '' 。 请注意,因为字符串是在没有尾随空格的情况下进行比较的, check (SomeCol<>'') 两者都足够了。 Best Answer Peter Vandivier 2020-04-23T13:14:27+08:002020-04-23T13:14:27+08:00 我讨厌空字符串。 话虽如此,不允许空字符串作为策略并不能解决根本问题。这是“垃圾进=垃圾出”。 如果我是一个知道我不能使用什么但我认为它很愚蠢的开发人员,我会找到一个例外。 没有空字符串?我会插入'x' 没有单个字符?我会插入'xx' 一些正则表达式过滤器可憎?随机文本算法很便宜。 如果您遇到垃圾数据的客户端问题,则不允许使用空字符串(或其他模式)。但是,每当您设置程序规则以预先过滤废话时,请确保减少需求和供应。弄清楚为什么人们需要垃圾数据,并给他们一个替代方案,而不是在水龙头上与他们抗争。 或者,您可以使用附加检查约束或自定义数据类型来强制执行某些输入约束?♂️
是的。是的你应该。
启用存储空字符串是 ANSI 标准行为,但这并不意味着这是一个好主意。而且您尤其不应该在列中同时允许Null 和 '' 。
请注意,因为字符串是在没有尾随空格的情况下进行比较的,
两者都足够了。
我讨厌空字符串。
话虽如此,不允许空字符串作为策略并不能解决根本问题。这是“垃圾进=垃圾出”。
如果我是一个知道我不能使用什么但我认为它很愚蠢的开发人员,我会找到一个例外。
'x'
'xx'
如果您遇到垃圾数据的客户端问题,则不允许使用空字符串(或其他模式)。但是,每当您设置程序规则以预先过滤废话时,请确保减少需求和供应。弄清楚为什么人们需要垃圾数据,并给他们一个替代方案,而不是在水龙头上与他们抗争。
或者,您可以使用附加检查约束或自定义数据类型来强制执行某些输入约束?♂️