SQL里if语句和case语句有啥区别吗?哪个使用更高效?就是查询更优化?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL里if语句和case语句有啥区别吗?哪个使用更高效?就是查询更优化?相关的知识,希望对你有一定的参考价值。

if 是条件判断语句 不能在 查询语句中出现,case 是条件检索 可以再查询中出现 参考技术A if 作为条件判断,一般用在存储过程或者函数里面;
譬如
if sqlstate ='02000' then
select xxx from tab

case是作为判断,用在查询当中
select id, case when id = 1 then 'one' else 'null' end

高效两个没有可比性,深究一点,都是一个逻辑判断,然后出结果,所以旗鼓相当,没必要在这个问题上探究性能问题追问

if 后面还能带个then?

追答

都说是存储过程或者函数里面用了,可以的

本回答被提问者和网友采纳

有啥方法可以减少程序中条件语句if-else或者switch-case的过多嵌套?

有什么方法可以减少程序中if-else或者switch-case的过多嵌套?
比如下面代码,用什么样的策略,可以减少条件语句的嵌套,又能达到相同目的呢?使用函数封装一些子条件是可以的,其他有什么方法吗?
if (condition1)
if(condition2)
if(condition3)
//do something

else
//do something
//if(condition3)

else
//do something
//if(condition2)
else//if (condition1)

谢谢大家的回答。其实我还是希望不使用条件语句,至少判断条件不要过于复杂,程序整体逻辑要清楚才好。

我听说过可以通过查表的方法来避免使用过多条件语句嵌套,谁能详细的讲讲?

写成横向的,这样是否看得清楚些

if( condition1 && condition2 && condition3 )
//条件都为真
else if( condition1 && condition2 && !condition3 )
//条件1 2 为真 条件3为假
else if( condition1 && !condition2 )
//条件1为真 条件 2 为假
else if( !condition1 )
//条件 1 为假
参考技术A select case吧 参考技术B 无语
实在不想看见if..else我看你只能用je jz这些了
你这不是没事找抽吗

以上是关于SQL里if语句和case语句有啥区别吗?哪个使用更高效?就是查询更优化?的主要内容,如果未能解决你的问题,请参考以下文章

if语句中可以没有case

sql先写join或者先写where有啥区别吗

反引号和单引号有啥区别?我可以在上面的查询中使用 IF 语句吗?

if语句和case语句 急急急 在线等

有啥方法可以减少程序中条件语句if-else或者switch-case的过多嵌套?

verilog中if else中能套if else吗,有啥错误啊,为啥??? case中能套if else吗 case中能套case吗