求助!紧急啊~~查询条件为空的时候略过,不为空是判断,不为空时的查询语句怎么加判断条件!!!

MrLn 2014-04-01 02:55:32

AND (ISNULL(@类型,'')='' OR 类型=@类型)
AND (ISNULL(@平台,'')='' OR 平台=@平台)

类似上面的语句,怎么加上这面的判断条件

IF @状态 = '2'
AND 状态 = 1 AND 标识 = 1 ';
ELSE IF @状态 = '2'
AND 状态 = 1 AND 标识 = 2 ';
ELSE IF @状态 = '3'
AND ( 状态 = -1 OR 状态 = 0 ) ';


...全文
218 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
--小F-- 2014-04-01
  • 打赏
  • 举报
回复
你这个用存储过程来写的话 就是拼接字符串
用IF 判断是对的

declare @sql nvarchar(max)
SET @SQL='SELECT * FROM tb where xx and (ISNULL(@类型,'')='' OR 类型=@类型) and AND (ISNULL(@平台,'')='' OR 平台=@平台)'
IF @状态 is null
SET @SQL=@SQL+'  and 1=1'
IF @状态 = '1'     
set @sql=@sql+'AND 状态 = 1 AND 标识 = 1 '
ELSE IF @状态 = '2'    
 set  @sql=@sql+'AND  状态 = 1 AND 标识 = 2 '
ELSE IF @状态 = '3'    
set @sql=@sql+'AND ( 状态 = -1 OR 状态 = 0 ) '
--小F-- 2014-04-01
  • 打赏
  • 举报
回复
你这个用存储过程来写的话 就是拼接字符串
用IF 判断是对的

declare @sql nvarchar(max)
SET @SQL='SELECT * FROM tb where xx and (ISNULL(@类型,'')='' OR 类型=@类型) and AND (ISNULL(@平台,'')='' OR 平台=@平台)
IF @状态 is null
SET @SQL=@SQL+'  and 1=1'
IF @状态 = '1'     
set @sql=@sql+'AND 状态 = 1 AND 标识 = 1 '
ELSE IF @状态 = '2'    
 set  @sql=@sql+'AND  状态 = 1 AND 标识 = 2 '
ELSE IF @状态 = '3'    
set @sql=@sql+'AND ( 状态 = -1 OR 状态 = 0 ) '
MrLn 2014-04-01
  • 打赏
  • 举报
回复
引用 6 楼 DBA_Huangzj 的回复:
你是要根据@状态,来判断用哪个?
当@状态为空时,不做判断, 当@状态=1 时,增加判断条件 “状态 = 1 AND 标识 = 1” 当@状态=2 时,增加判断条件 “状态 = 1 AND 标识 = 2” 当@状态=3 时,增加判断条件 “状态 = -1 OR 状态 = 0” 这是个查询语句的 where 部分
發糞塗牆 2014-04-01
  • 打赏
  • 举报
回复
你是要根据@状态,来判断用哪个?
--小F-- 2014-04-01
  • 打赏
  • 举报
回复
你这样写没什么问题吧。 如果非要判断@状态为‘’的话 你可以这样 IF @状态 is null and 1=1
MrLn 2014-04-01
  • 打赏
  • 举报
回复
引用 3 楼 fredrickhu 的回复:
我怎么感觉没懂意思。
这就是个查询语句,
AND (ISNULL(@类型,'')='' OR 类型=@类型)
AND (ISNULL(@平台,'')='' OR 平台=@平台)
这是查询条件 我想再加个查询条件 就是这个

F @状态 = '1'
     AND 状态 = 1 AND 标识 = 1  ';
ELSE IF @状态 = '2'
     AND  状态 = 1 AND 标识 = 2 ';
ELSE IF @状态 = '3'
    AND ( 状态 = -1 OR 状态 = 0 ) ';
@状态是存储过程传入值,状态 和 标识 是表中的字段
--小F-- 2014-04-01
  • 打赏
  • 举报
回复
我怎么感觉没懂意思。
MrLn 2014-04-01
  • 打赏
  • 举报
回复
引用 1 楼 DBA_Huangzj 的回复:
参数用null做默认值,然后: where a=isnull(@a,A)这样来判断,
能具体点吗,我菜鸟~~~~ 谢谢了
發糞塗牆 2014-04-01
  • 打赏
  • 举报
回复
参数用null做默认值,然后: where a=isnull(@a,A)这样来判断,

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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