SQL Server:检查值是"IS NULL"还是"= integer value"的优雅方法



我有一个表,它由一些代码单元格(用于索引目的)和一个"值"单元格(我感兴趣的数据所在的位置)组成,类似于以下内容:

 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]'?

提前谢谢。如果我需要更清楚,请告诉我。

你来了:

WHERE ISNULL(Code4,SomeInteger)=SomeInteger

如果 Code4 为 null,它将匹配整数。 如果 Code4 与整数匹配,它将匹配整数。 如果 Code4 是任何其他整数,则它不会匹配。

编辑

你甚至需要这个检查吗? 表中是否有空值? 如果是这样,则 NULL 参数将匹配。

就我而言,它有效。特别是如果您将零视为值。

ISNULL(cast(@FirstInt as varchar),''

)<>ISNULL(cast(@SecondInt as varchar),'')

试试这个...

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

相关内容

  • 没有找到相关文章

最新更新