我有一个表,其中包含一些代码单元(用于索引目的)和一个“值”单元格(我感兴趣的数据存在于其中),类似于以下内容:
column: datatype:
code1 int
code2 int
code3 int
code4 int
attributes varchar(max)
我正在检查添加到此表的存储过程中的一些输入代码,并且添加的约束是我的INPUT代码(@ code1,@ code2,@ code3,@ code4)可以等于某个值或者它们可以为null,但与表中某些匹配行中的那些相同。
说出以下声明的最佳方式是什么:
SET @targetAttributesCell = (SELECT attributes FROM MyTable
WHERE (code1 = @code1)
AND (code2 = @code2)
AND (code3 = @code3)
AND (code4 = @code4)); <-- where code1/@code1 'IS NULL' or = '[some integer]'?
提前致谢。如果我需要更清楚,请告诉我。
答案 0 :(得分:3)
你走了:
WHERE ISNULL(Code4,SomeInteger)=SomeInteger
如果Code4为null,则它将与整数匹配。如果Code4匹配整数,它将匹配整数。如果Code4是任何其他整数,则它将不匹配。
修改
你甚至需要这张支票吗?表中是否有NULL值?如果是这样,则NULL参数将匹配。
答案 1 :(得分:0)
就我而言,它可以工作。 尤其是如果您将零视为值。
ISNULL(cast(@FirstInt如varchar),'')<> ISNULL(cast(@SecondInt如varchar),'')
答案 2 :(得分:-1)
试试这个......
SET @targetAttributesCell = (SELECT attributes FROM MyTable
WHERE ( @code1 IS NOT NULL and code1 = @code1)
AND (@code2 IS NOT NULL and code2 = @code2)
AND (@code3 IS NOT NULL and code3 = @code3)
AND (@code4 IS NOT NULL and code4 = @code4)); <-- where code1/@co