"@Parameter = null" 在 Where 子句 SQL Server 中



我在TBL中有一个使用以下查询查询的记录。

    SELECT *
    FROM tbl
    WHERE Column1 = 'A'
    AND Column2 = 'B'
    AND Column3 IS NULL

我有一个SP,其中我需要使用这些参数来查询记录,一个示例在此下面我想返回上面的记录,但如果Say @parameter3 ='c',也要返回数据。什么是正确的语法?是否"和(column3 = @parmeter3或 @parmeter3是null)返回多个记录?我只喜欢上面的单个记录。谢谢。

DECLARE @PARAMETER1 VARCHAR (150),
        @PARAMETER2 VARCHAR (150),
        @PARAMETER3 VARCHAR (150)
SELECT  @PARAMETER1 = 'A',
        @PARAMETER2 = 'B',
        @PARAMETER3 = NULL
SELECT *
    FROM tbl
    WHERE Column1 = @PARAMETER1
    AND Column2 = @PARAMETER2
    AND Column3 = @PARMETER3
SELECT *
    FROM tbl
    WHERE Column1 = @PARAMETER1
    AND Column2 = @PARAMETER2
    AND ISNULL(Column3, '') = ISNULL(@PARMETER3, '') --PARAMETER3?

如果''通常不是Column3的有效值。

如果您有,则在第3列中索引,并且使用:

AND ISNULL(Column3, '') = ISNULL(@PARMETER3, '')

它效率低下。您应该使用:

AND Column3 = ISNULL(@PARMETER3, Column3)

使用红色查询:

  DECLARE @PARAMETER1 VARCHAR (150),
  @PARAMETER2 VARCHAR (150),
  @PARAMETER3 VARCHAR (150)
  SELECT  @PARAMETER1 = 'A',
  @PARAMETER2 = 'B',
  @PARAMETER3 = 'IS NULL'
  declare @sql VARCHAR(MAX)
  set @sql ='SELECT *    FROM tbl    WHERE Column1 = ' + @PARAMETER1+   
 'AND  Column2 = ' +  @PARAMETER2+    'AND Column3 ' +    @PARAMETER3 
  execute (@sql) -- to select query

相关内容

  • 没有找到相关文章

最新更新