以文本方式查看主题

-  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
--  
杰哥这个方法可以   谢谢      我试试看会不会有问题