我的意思是@name、@page用户输入的值为空不作为查询条件

解决方案 »

  1.   


    select * from usertable 
    where (name=@name and page=@page ) or name is null or page is null
      

  2.   


    select * from usertable 
    where (name=@name and page=@page ) or @name is null or @page is null
      

  3.   

    select * from usertable 
    where (name=@name and page=@page ) or (page=@page and name is null) or (name=@name and page is null) or (page is null and name is null)
      

  4.   


    SELECT * FROM usertable WHERE name=ISNULL(NULLIF(@name,''),name) AND page=ISNULL(NULLIF(@page,''),page)
      

  5.   


    select * from usertable 
    where name like '%'+@name+'%' and page like '%'+@page+'%'--只要有一个不为空它就是查询条件,如果都为空的话就相当于 select * from usertable 
      

  6.   

    SELECT * FROM userTable WHERE name=ISNULL(@name,name) AND page=ISNULL(@page,page)
      

  7.   

    1、select * from tb where (@name id null or name=@name ) and (page is null or page=@page )
      

  8.   

    首先谢谢各位,但回了那么多,我都不知道那个是对的了,我再详细的解释一下:
    我说的空是指“”,空字符串!!(之前没说清楚)
    1、如果用户两个都输入1、1,则sql为:
    select * from usertable where name='1' and page=‘1’
    2、如果用户第一个都输入1,没输入第二个,则sql为:
    select * from usertable where name='1'
    3、如果用户第二个都输入1,没输入第一个,则sql为:
    select * from usertable where page=‘1‘
    4、如果用户都没输入,则sql为:
    select * from usertable 上面的sql是我要实现的效果,
    怎么用一条sql语句写出来??? 
      

  9.   

    create table tb(id int,n varchar(10),page int)
    insert into tb select 1,'aa',5
    insert into tb select 1,'bb',3
    go
    declare @n varchar(10),@p int
    --set @n='aa'
    set @p=5
    --下面是你要的一句sql语句
    select * from tb where 1=(case when @n is null or n=@n then 1 else 0 end) and 1=(case when @p is null or page=@p then 1 else 0 end)
    go
    drop table tb
    /*
    id          n          page
    ----------- ---------- -----------
    1           aa         5
    */
      

  10.   

    SELECT * FROM proj_manage WHERE charge=IFNULL(NULLIF('1',''),charge) AND proj_name=IFNULL(NULLIF('2222',''),proj_name)
    结贴了
      

  11.   

    8楼不写错字的确是对的。 在VC里,写   '%s' =''  不能用'%s' is null