0

我有一个国家表,它定义了你来自哪个国家,1-5.. 我写了一个下拉列表供一个人选择你想搜索的女巫国家。我在下拉列表中有一个部分,我想选择全部搜索。如果国家为 0,那么我希望它不受限制,就像在下面的代码中一样

   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

4 回答 4

0

让它工作设置(国家 = null 或城镇 = @town)或(国家 = null 或邮政编码 = @邮政编码)。

感谢所有的帮助!

于 2013-08-15T08:22:16.603 回答
0

当设置“选择所有国家”选项时,您可以为@country 发送一个空值,然后

像这样使用 where 子句: WHERE (@country is null or country = @country)

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

于 2013-08-15T08:10:34.310 回答
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 
于 2013-08-15T08:16:02.400 回答
0

您应该能够在您的 : 中添加另一个条件WHERE

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

我显然假设你有一个@selectAllCountries1 或 0 的变量。

于 2013-08-15T08:17:25.980 回答