我的意思是@name、@page用户输入的值为空不作为查询条件
解决方案 »
- [求助]搜索二表不匹配的记录
- sqlserver有求指数的函数么
- select 数据被截断了 怎办
- 我用between and 语法 查询时间 出现如下很怪胎的问题 请进祥看
- 如何理解“SET IDENTITY_INSERT 的设置是在执行或运行时设置,而不是在分析时设置。”??
- 高价收购一条sql语句
- bcp 导出指定查询数据到Excel2007
- 企业管理器的注册问题
- @avg_price1 和@avg_price 值为什么不一样
- 关于SQL7.0数据库添加表的问题
- 怎么在XP上装SQL 2000企业版
- 查询表出现“数据库 ID 15,页 (1:21826) 已标记为 RestorePending,可能表明磁盘已损坏。要从此状态恢复,请执行还原操作。”
select * from usertable
where (name=@name and page=@page ) or name is null or page is null
select * from usertable
where (name=@name and page=@page ) or @name is null or @page is null
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)
SELECT * FROM usertable WHERE name=ISNULL(NULLIF(@name,''),name) AND page=ISNULL(NULLIF(@page,''),page)
select * from usertable
where name like '%'+@name+'%' and page like '%'+@page+'%'--只要有一个不为空它就是查询条件,如果都为空的话就相当于 select * from usertable
我说的空是指“”,空字符串!!(之前没说清楚)
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语句写出来???
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
*/
结贴了