数据库中字段为null和空带来的麻烦

来源:互联网 发布:商业数据分析师 笔试 编辑:程序博客网 时间:2024/04/29 01:46

 问题描述:客户反映在系统生成数据库文件时会产生重复记录,但是在检查代码时表面看起来一切正常,由于自己刚刚工作又没怎么接触C#所以感觉还是挺有挑战的,幸亏在一个老大哥的帮助下解决了问题,(*^__^*) 嘻嘻……

解决过程:

1.在分步调试的过程中发现有个sql:select distinct......中distinct没有起到作用,可能是因为某些字段为空的原因。

2.因为数据是通过临时表导入到基础表的,所以想通过将临时表的空字段插入有效的值然后再通过distinct插入基础表。

3.可是查看临时表时却发现有的记录并没有插入进去,后来Google了一下发现原来是有些字段为空、有些字段为null的原因。

4.最后解决在where条件中又多了个条件让空和null的记录全部被插入临时表,然后导入基础表。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

【转】(空字串)、Null、Empty、与 Nothing 的区别

先回答以下问题吧! 经过以下的叙述之后, 变量 A、B、C、D 分别等于 0、
""、Null、 Empty、 Nothing 的哪一个?
Dim A
Dim B As String
Dim C As Integer
Dim D As Object
A 等于 Empty, 因为尚未初始化的「不定型变量」都等于 Empty。但如果检
测 A = "" 或 A = 0, 也都可以得到 True 值。
B 等于 "", 因为尚未初始化的非固定长度「字串」都等于 "" 。 但请注意
B<> Null。
C 等于 0, 这个还有问题吗?
D 等于 Nothing, 尚未设定有物件的「物件变量」都等于 Nothing, 但请不
要使用 D = Nothing , 而要使用 D Is Nothing 来判断 D 是否等于 Nothing,
因为判断 是否相等的符号是 Is 不是 = 。
最令人迷惑的地方是 Null 这个保留字, 请看以下语句:
Print X = Null
Print X <> Null
结果都是输出 Null(不是 True 也不是 False), 这是因为任何一个运算式只
要含有 Null , 则该运算式就等于 Null, 实际上想要判断某一数据是否为 Null
绝对不能使用:
If X = Null Then ' 永远都会得到 Null
而要使用:
If IsNull(X) Then
哪一种数据会等于 Null 呢? 除了含有 Null 运算式之外, 就属没有输入任
何数据的「数据字段」(在数据库中) 会等于 Null。

 

原创粉丝点击