一尘不染

SQL-条件WHERE子句

sql

我有一个执行查询的SQL Server 2005存储过程。该存储过程采用三个参数。参数如下:

@StateID为int,
@ CountyID为int,
@ CityID为int

这些参数用于查询客户列表。如果参数值不为null,我基本上想做一个“ AND”。但是,我目前无法执行if-
else。如果参数值不为null,如何添加这些子句。换一种说法:

SELECT
  *
FROM
  Customer c
WHERE
 c.StateID=@StateID 
 -- AND c.CountyID=@CountyID IF @CountyID IS NOT NULL
 -- AND c.CityID=@CityID IF @CityID IS NOT NULL

阅读 172

收藏
2021-03-10

共1个答案

一尘不染

加上一些OR语句:

SELECT *
FROM
    Customer c
WHERE
    c.StateID=@StateID
    AND ( c.CountyID=@CountyID OR @CountyID IS NULL )
    AND ( c.CityID=@CityID OR @CityID IS NULL )

对于这些参数中的每个参数,如果它为null,则基本上忽略该检查。

2021-03-10