今天要用SQL实现一个小小的逻辑,总之呢,需要用到一些判断条件,所以准备使用一下
case when的用法,但是由于之前只写过case when else end单条语句,没有写过嵌套,而且
感觉sql写起来也不好调试,所以在网上找了下资料。
第一步,先写一个简单的嵌套测试一下:
select case when 1=1 then
case when 2<3 then
'2A'
else
'2B'
end
else '1A'
end
from dual;
执行完毕,显示"2A"。于是在一步步往上面加,根据其语法,我们可以观察得出每一个case都要对应一个end结束符,else条件可要
可不要,与编程语言里面的if和else是相似的,那么现在实现一个这样的算法:
if(i > A && i< B){
if(i - A > B - i){
if(B - i > 0){
return 60;
}else{
return B - i;
}
}else{
if(i - A > 0){
return 60;
}else{
i - A;
}
}
}else{
return 0;
}
看看这个够复杂了吧,下面是实现后的SQL代码:
case when (A<i and B>i) then
case when i-A>B-i then
case when B-i>0 then
60
else
B-i
end
else
case when i-A>0 then
60
else
i-A
end
end
else 0
end
只要注意格式就不会有问题了。