sql where语句帮助。如果为0则选择全部

时间:2013-08-15 08:05:54

标签: sql where-clause

我有一个国家/地区标签,用于定义您所在的国家/地区,1-5 ..我已经为您选择了要搜索的女巫国家。我在下拉列表中有一个部分,我想选择全部搜索。如果country为0,那么我希望它不受限制,就像在下面的代码中(country = @country和town = @town)我只想要它(town = @town)等

   IF @Case = 1 BEGIN
                SELECT
                    Rec_Id,
                    Country,
                    PostalCode,
                    Town,
                    Lat,
                    Lng


                FROM dbo.tbl_PostalCode AS PC WITH (NOLOCK)
                WHERE 
                 (town = @town AND country = @country) or (postalcode = @postalcode AND country = @country) 

4 个答案:

答案 0 :(得分:0)

当设置“选择所有国家/地区”选项然后

时,您可以为@country发送空值

使用where子句,如下所示: WHERE(@ country是null或country = @country)

编辑:只是为了澄清事情。为什么我会使用空值是因为imho表示“没有对该参数的过滤器”比使用任意值更好。

答案 1 :(得分:0)

如果我正确理解了这个问题,那么你传递的@Country变量的可能值为1 - 5,但是可能的值为0,等于所有国家。

尝试使用以下内容:

IF @Case = 1 
  BEGIN 
      SELECT REC_ID, 
             COUNTRY, 
             POSTALCODE, 
             TOWN, 
             LAT, 
             LNG 
      FROM   DBO.TBL_POSTALCODE AS PC WITH (NOLOCK) 
      WHERE  ( COUNTRY = @country 
                OR @country = 0 ) 
             AND ( TOWN = @town 
                    OR POSTALCODE = @postalcode ) 
  END 

答案 2 :(得分:0)

您应该只能为WHERE添加其他条件:

...
WHERE
  (@selectAllCountries = 1 OR country = @country)
  AND (town = @town OR postalcode = @postalcode)

我显然假设你有一个@selectAllCountries变量,它是1或0。

答案 3 :(得分:0)

让它工作设置(country = null或town = @town)或(country = null或postalcode = @postalcode)。

感谢您的帮助!