以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- SQL Null问题 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=176954) |
-- 作者:aizaishuzui -- 发布时间:2022/5/4 19:28:00 -- SQL Null问题 头大了 头特别大了 DataTable 里面的字符串DataRow 空值为 "" MSSQL 里面存储空的为Null sele ct count(*) from {表A} where 第一列 = \'" & dr("列A") & "\' 返回0 导致插入了无数多重复数据 这个要怎么避免?莫非判断语句? dim f as string if dr.IsNull("列A") then
f = sele ct count(*) from {表A} where 第一列 = \'\'& or 第一列 is null "\' else
f = sele ct count(*) from {表A} where 第一列 = \'" & dr("列A") & "\' endif 如果全部所有查询都要改写的话,我怕我会死掉 无数多的if else endif
|
-- 作者:程兴刚 -- 发布时间:2022/5/4 19:35:00 -- sele ct count(*) from {表A} where 第一列 = \'" & dr("列A") & "\'" |
-- 作者:aizaishuzui -- 发布时间:2022/5/4 19:39:00 -- 不是 你理解错我的意思了 我查询如果不是空值没有问题 例如 Dim cmd As new SQLCommand cmd.C cmd.CommandText = "Sele ct Count(*) from {orderItems} Where o_id = \'30385065\' And oi_id = \'29348516\' And outer_oi_id is null" Output.Show(cmd.ExecuteScalar) 等于5 cmd.CommandText = "Sele ct Count(*) from {orderItems} Where o_id = \'30385065\' And oi_id = \'29348516\' And outer_oi_id = \'\'" Output.Show(cmd.ExecuteScalar) 等于0 |
-- 作者:aizaishuzui -- 发布时间:2022/5/4 20:04:00 -- 再个例子 更清晰 Dim cmd As new SQLCommand cmd.C Dim dt As DataTable cmd.CommandText = "Se lect * From {orderItems} Where [_Identify] Is Null" dt = cmd.ExecuteReader(True) \'记得将参数设置为True Dim dr As DataRow = dt.AddNew() dr("o_id") = "30385065" dr("oi_id") = "29348516" Dim f As String = "o_id = \'" & dr("o_id") & "\' And oi_id = \'" & dr("oi_id") & "\' And outer_oi_id = \'" & dr("outer_oi_id") & "\'" cmd.CommandText = "Se lect Count(*) from {orderItems} Where " & f Output.Show(cmd.ExecuteScalar) 输出 0 If dr.IsNull("outer_oi_id") Then f = "o_id = \'" & dr("o_id") & "\' And oi_id = \'" & dr("oi_id") & "\' And outer_oi_id is null " End If cmd.CommandText = "Se lect Count(*) from {orderItems} Where " & f Output.Show(cmd.ExecuteScalar) 输出 5
|
-- 作者:有点蓝 -- 发布时间:2022/5/4 22:02:00 -- 只能是if else判断,没有其它办法 |
-- 作者:aizaishuzui -- 发布时间:2022/5/4 22:49:00 -- 这个好简单的问题 怎么会全网都没办法 都说要判断 |
-- 作者:aizaishuzui -- 发布时间:2022/5/4 22:50:00 -- 我这边一直读接口的数据,然后判断是否有重复的数据,结果现在整个系统数据全都乱了 只能清库重新来了 |
-- 作者:aizaishuzui -- 发布时间:2022/5/4 23:16:00 -- 除了 字符串 列有存在这种异常,其他类型的列会不会有呢 例如日期类 、数值列 |
-- 作者:chen37280600 -- 发布时间:2022/5/4 23:26:00 -- Null和"" 不是同一个东西。你可以理解为 没有纸和白纸的区别。 如果去重,为了排除null的干扰,一般我都会给用来查重的列,先做一个sql,把null批量更新为""
|
-- 作者:aizaishuzui -- 发布时间:2022/5/5 9:27:00 -- 杰哥这个方法可以 谢谢 我试试看会不会有问题 |