8kb*_*8kb 4 empty-string sql-server best-practices stored-procedures
我有一个接受各种 varchar 参数的存储过程。调用该过程的中间层代码在它提交的值方面不一致。例如,有时像“传输描述”这样的参数会被提交为 NULL,有时它会是一个空字符串。
就客户端而言,空字符串仅表示未输入值。
在插入数据之前,我应该将所有空的 varchar 参数转换为 NULL 吗?
我无法确定这是否属于保持数据完整性的最佳实践,还是一个坏主意,因为我没有代表实际提交给数据库的内容。
我应该注意到所有插入和更新都在审计日志中进行跟踪。
作为 DBA,您的神圣职责是接受委托给您的任何数据,并保持原样。
字段中的 NULL 通常意味着“未输入数据”或“数据不适用”(但可以有其他含义 - 它是特定于上下文的),并且实际上可能对业务层有意义。空字符串实际上可能是用户输入和想要的。当然,我是概括性的 - 可能您得到 NULL 或 ''(空字符串)的原因是由于业务层中的一些草率编码(但我们希望不是)。
无论哪种方式,与提供中间层的人聊天,看看他们使用 NULL 还是 Empty String 的目的 - 然后从那里开始。也许他们认为他们总是传入一个空字符串(或总是 NULL)并且不知道随机性(在这种情况下,建议他们您认为应该是标准的内容),或者 NULL 真的是给他们的信息
这是理论与实践相结合的地方:这是一个很大的灰色地带
想法:
(MyCol IS NULL OR MyCol = @MyCol)
现在在 SQL Server 中进行了相当优化就个人而言,除非有充分的理由,否则我会使用 NULL 并避免使用空字符串。主要是为了理智和一致性。胡说八道理论。
归档时间: |
|
查看次数: |
4376 次 |
最近记录: |