SQL在WHERE语句里实现条件判断,执行对应的条件

ingdear 2014-07-10 11:03:35
SQL在WHERE语句里实现条件判断,执行对应的条件

表里有列 A B C D E五列
要实现的条件为:

当len(A)>0 执行的条件为 B=C
否则 执行的条件为 D=E

有没有办法在where语句里实现,或是其它方法
因为有其它语句,而且是已经写好了的,现在是要加个判断,能改动最少就比较好。
...全文
21974 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
我不叫康师傅 2016-12-05
  • 打赏
  • 举报
回复
select * from test table where (case when len(A)>0 and B=C then 1 end )=1 or (case when len(A)<=0 and D=E then 1 end )=1
专注or全面 2014-07-10
  • 打赏
  • 举报
回复
当len(A)>0 执行的条件为 B=C 否则 执行的条件为 D=E select * from tablename where (b=c and len(A)>0) or (D=E)
exception92 2014-07-10
  • 打赏
  • 举报
回复
if else 判断 拼接sql语句吧。
ingdear 2014-07-10
  • 打赏
  • 举报
回复
好吧,看来只有这样了。。
發糞塗牆 2014-07-10
  • 打赏
  • 举报
回复
这种判断都差不多,除非你的情景可以把重复的部分封装到一个存储过程里面,把数据insert into #tb exec 存储过程 之后再判断where条件是否D=E还是什么之类的,这种写法有一定限制
ingdear 2014-07-10
  • 打赏
  • 举报
回复
那这样不是要把中间的那一陀代码复制一份 隐隐做痛。。
發糞塗牆 2014-07-10
  • 打赏
  • 举报
回复
看你的要求实际上也就是两个IF/ELSE就够了吧。要么大于0,要么等于0,改动也不大
ingdear 2014-07-10
  • 打赏
  • 举报
回复
嗯,现在能想到的也是这样。。
發糞塗牆 2014-07-10
  • 打赏
  • 举报
回复
这个要么写一大堆IF/ELSE,要么拼接SQL再用case when来拼
ingdear 2014-07-10
  • 打赏
  • 举报
回复
用了这个直接超时。。。。 select * from tablename where (b=c and len(A)>0) or (D=E and len(A)=0) 还是复制一下那一砣砣的代码吧。
霜寒月冷 2014-07-10
  • 打赏
  • 举报
回复
引用 9 楼 ingdear 的回复:
[quote=引用 8 楼 x_wy46 的回复:] 当len(A)>0 执行的条件为 B=C 否则 执行的条件为 D=E select * from tablename where (b=c and len(A)>0) or (D=E)
哈哈哈 select * from tablename where (b=c and len(A)>0) or (D=E and len(A)=0) ......[/quote]
update tb set B=(case when len(A)>0 then C  end) ,D=(case when len(A)<=0 then E end)
ingdear 2014-07-10
  • 打赏
  • 举报
回复
引用 8 楼 x_wy46 的回复:
当len(A)>0 执行的条件为 B=C 否则 执行的条件为 D=E select * from tablename where (b=c and len(A)>0) or (D=E)
哈哈哈 select * from tablename where (b=c and len(A)>0) or (D=E and len(A)=0) ......

27,580

社区成员

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

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