-
-
tyy__think 小试身手Lv3
发表于2020-12-8 14:48
悬赏10
已解决
if嵌套是类似这样的:if(条件1,颜色1,if(条件2,颜色2,if(条件3,颜色3,颜色4))),是无论条件1成不成立,都会依次执行颜色1、2...等等吗,直到最后
条件成立才停止吗tyy__think 发表于 2020-12-8 15:35
这样多个条件写是不是会出现问题呢,但是页面比较多,又都是同一个下钻页,就是sql过滤条件不同 ...
需要考虑几个点,首先单独每个条件是否能够跑通
然后在每个if里都加mkfilter,为啥不改成外面一整个mkfilter里面写if判断,另外这里mkfilter其实可以i替换成手写判空条件做没必要写mkfilter,写这种判空if(@参数组件 is null,1=1,条件)
最后还可以考虑用case when试试
case when 条件1 then 结果1 when 条件2 then 结果2 else 结果3 end
12个回答
-
tyy__think 小试身手Lv3
凹凸曼 发表于 2020-12-8 15:20
这里的嵌套if不就是的吗,还是说另外的意思,您有没有一个具体的需求方便描述一下吗 ...
这个是同一个详情页就是不同的类型跳转到这个页面的,但是我发现好像无论条件是否成立,都会执行每一条过滤语句,到最后条件为真时,就是页面展示的数据

-
tyy__think 小试身手Lv3
凹凸曼 发表于 2020-12-8 15:20
这里的嵌套if不就是的吗,还是说另外的意思,您有没有一个具体的需求方便描述一下吗 ...
这样多个条件写是不是会出现问题呢,但是页面比较多,又都是同一个下钻页,就是sql过滤条件不同
tyy__think 发表于 2020-12-8 15:35
这样多个条件写是不是会出现问题呢,但是页面比较多,又都是同一个下钻页,就是sql过滤条件不同 ...
需要考虑几个点,首先单独每个条件是否能够跑通
然后在每个if里都加mkfilter,为啥不改成外面一整个mkfilter里面写if判断,另外这里mkfilter其实可以i替换成手写判空条件做没必要写mkfilter,写这种判空if(@参数组件 is null,1=1,条件)
最后还可以考虑用case when试试
case when 条件1 then 结果1 when 条件2 then 结果2 else 结果3 end
-
tyy__think 小试身手Lv3
凹凸曼 发表于 2020-12-8 15:45
需要考虑几个点,首先单独每个条件是否能够跑通
然后在每个if里都加mkfilter,为啥不改成外面一整个mkfil ...
首先每条语句都跑的通(针对当前页跳转到它的下钻页),对于你说的建议你不觉得那种写法更复杂么,主要是嵌套这么多,最后case when有局限

tyy__think 发表于 2020-12-8 15:57
首先每条语句都跑的通(针对当前页跳转到它的下钻页),对于你说的建议你不觉得那种写法更复杂么,主要是 ...
可以用的,



因为看到您这里是有多个类似casewhen这种一个个的条件的才想着用case的,您这里去掉宏手动写判空或者把mkfilter放外面试试
-
tyy__think 小试身手Lv3
凹凸曼 发表于 2020-12-8 16:08
可以用的,
因为看到您这里是有多个类似casewhen这种一个个的条件的才想着用case的,您这里去掉宏手动写 ...
好的谢谢,去掉宏手动写判空这个写法是?