首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >动态SQL查询

动态SQL查询
EN

Stack Overflow用户
提问于 2012-04-25 17:00:12
回答 2查看 90关注 0票数 0

假设我有一个房地产网站,在默认页面中,我想让用户获得符合其参数的帖子数量

我添加了 a link to an example image

计数器应该对每个更改做出反应,并自动向用户显示数字(这将在ajax jquery中实现)

我写了一个查询,但它只有在所有参数都填好的情况下才能工作,并且我想启用一些参数,同时仍能使计数器工作

下面是查询

代码语言:javascript
复制
ALTER PROCEDURE shahar30_nadlan.CountPropertyResultsByquery 


@AreaID         int,
@DealID        int,
@PropertyTypeId int,
@FieldMax      int,
@FieldMin      int,
@RoomsMax      decimal,
@RoomsMin      decimal,
@PriceMax      int,
@PriceMin      int,
@ParkingSpace  bit,
@Elevator      bit,
@Aircondition  bit,
@Furniture     bit,
@Warehouse     bit,
@Balkony       bit,
@handicapped  bit, 
@Immediate    bit,
@Description  NVARCHAR(MAX)

AS
BEGIN


select count(*) from Tbl_Property
where AreaID        = @AreaID         and 
  DealID        = @DealID         and
  PropertyTypeId= @PropertyTypeId and
  Field  <= @FieldMax        and
  Field  >= @FieldMin        and
  Rooms  <= @RoomsMax        and
  Rooms  >= @RoomsMin        and
  Price  <= @PriceMax        and
  Price  >= @PriceMin       and
  ParkingSpace = @ParkingSpace   and
  Elevator = @Elevator       and
  Aircondition = @Aircondition   and
  Furniture = @Furniture      and
  Warehouse = @Warehouse      and
  Balkony = @Balkony        and
  handicapped = @handicapped    and
  [Immediate] = @Immediate      and
  Description like  '%' + @Description + '%' 

END

谢谢你沙哈尔·纳迪亚

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-25 17:04:17

not所有参数都应填写

如果没有提供一个值,所以它是null (除非它有一个默认的val),然后:

您应该使用的模式是:

代码语言:javascript
复制
select * from myTable where 

(  @companyId  IS NULL  OR ( companyId = @companyId ))
and
 ( @Name IS NULL  OR ( Name  = @Name ))
and
...

代码语言:javascript
复制
 (   companyId  = isnull(@companyId,companyId ))
      and
  (    Name = isnull(@Name ,Name ))
      and

    ...

coalesce也可以在这里使用--但速度较慢。( than is null)

票数 2
EN

Stack Overflow用户

发布于 2012-04-25 17:09:40

你有没有尝试过可选参数?下面是一个示例:

代码语言:javascript
复制
@PriceMin      int = 1,

您可以像这样设置默认值,然后只传递所需的参数,让其余的参数采用默认值。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10312433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档