Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 选择查询值可以为空的查询_C#_Sql Server_Tsql_Select_Null - Fatal编程技术网

C# 选择查询值可以为空的查询

C# 选择查询值可以为空的查询,c#,sql-server,tsql,select,null,C#,Sql Server,Tsql,Select,Null,MS SQL Server中的My table mytable如下所示: |Id|ka|kb|kc |kd |1 | 1| 1|NULL|NULL |2 | 1| 1|1 |NULL |3 | 1| 1|1 |1 其中Id、ka-kb不能为null,但kc和kd可以为null 我可以从mytable中选择同样可以为null的变量吗 我希望mytable中的Id为1,只有1,但我在C中得到了NULL,或者在T-SQL中没有结果。您似乎在寻找一个NULL安全的等式。在标准SQL中,我们有

MS SQL Server中的My table mytable如下所示:

|Id|ka|kb|kc  |kd
|1 | 1| 1|NULL|NULL
|2 | 1| 1|1   |NULL
|3 | 1| 1|1   |1
其中Id、ka-kb不能为null,但kc和kd可以为null

我可以从mytable中选择同样可以为null的变量吗


我希望mytable中的Id为1,只有1,但我在C中得到了NULL,或者在T-SQL中没有结果。

您似乎在寻找一个NULL安全的等式。在标准SQL中,我们有不同于的运算符,但SQL Server不支持它,并且没有提供等效的运算符

我们只剩下布尔逻辑:

select id
from mytable 
where 
    ka = varka 
    and kb = varkb 
    and ( (kc is null and varkc is null) or kc = varkc )
    and ( (kd is null and varkd is null) or kd = varkd )

不,如果您正在编写T-SQL,那么几乎总是要使用ANSI null行为,这意味着null永远不等于任何东西:甚至不等于null——您需要使用is null来测试null。但是,不清楚您是如何添加参数的,所以我不清楚您在这里做什么。
select id
from mytable 
where 
    ka = varka 
    and kb = varkb 
    and ( (kc is null and varkc is null) or kc = varkc )
    and ( (kd is null and varkd is null) or kd = varkd )