sql语句 当查询条件为空时不作为条件 怎么写

zhuzhu53320 2013-06-06 04:50:55
select * from usertable where name=@name and page=@page
我的要求是当name为空就不作为条件,即:
select * from usertable where page=@page
当page为空不作为条件,即:
select * from usertable where name=@name
当page,name都为空不作为条件,即
select * from usertable
怎么用一条sql语句写出来???
...全文
10373 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lisession_li 2015-12-03
  • 打赏
  • 举报
回复
SELECT * FROM TB WHERE 1=1 AND ( (@NAME IS NOT NULL AND TB.NAME = @NAME ) OR @NAME IS NULL ) AND ( (@PAGE IS NOT NULL AND TB.PAGE = @PAGE) OR @PAGEIS NULL )
usbusb2007 2013-06-07
  • 打赏
  • 举报
回复
是@name
zhuzhu53320 2013-06-06
  • 打赏
  • 举报
回复
引用 5 楼 spiritofdragon 的回复:
select * from usertable where 1=1 and (name=@name or @name='') and (page=@page or @page='')
@name=''这里是name还是用@name?
spiritofdragon 2013-06-06
  • 打赏
  • 举报
回复
select * from usertable where 1=1 and (name=@name or @name='') and (page=@page or @page='')
  • 打赏
  • 举报
回复
DECLARE @name VARCHAR(100),@page INT =1 SET @name='张三' DECLARE @sql VARCHAR(1000) SET @sql='select * from myTable where 1=1' IF @name IS NOT NULL SET @sql=@sql+' and name='''+@name+''''--字符型注意引号个数 IF @page IS NOT NULL SET @sql=@sql+' and page='+LTRIM(@page)--int类型注意转换为字符型 --PRINT @sql EXEC(@sql)
spiritofdragon 2013-06-06
  • 打赏
  • 举报
回复
select * from usertable where 1=1 and (name=@name or @name='') and (page=@page and @page='')
zhuzhu53320 2013-06-06
  • 打赏
  • 举报
回复
怎么动态拼接
  • 打赏
  • 举报
回复
动态拼接。

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧