SQL语句中能否含有if....else...判断语句?

有个表, 其中有col1,col2,和col3三列, 如果col1>1, 输出col2, 否则输出col3, 这样的条件能否用SQL语句实现? 尝试了很久, 不得其解, 求高手解答

SQL语句中是没有if....else...语句的,但可以用case语句代替,而且是所有数据库都支持的,效果和if语句一样,都是表示条件。具体使用语法如下:
case when 条件1,

then 结果1; 

when 条件2 ,

then 结果2 ;

else 结果N ,end。

可以有任意多个条件,如果没有默认的结果,最后的else也可以不写。
例如:select case when col1 > 1 then col2 else col3 end from XXXtable

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2019-10-29

SQL中没有ifif....else...判断语句,但有case…语句,而且是所有数据库都支持的。

拓展资料:

程序中用法如下:

1、oracle和mysql数据库都可以这样写CASE WHEN (RO.APPROVE_QUANTITY - NVL(tto.QUANTITY , 0 )) < 0 THEN 0 ELSE (RO.APPROVE_QUANTITY-NVL(tto.QUANTITY , 0 )) END surplusQuantity.

2、注意:NVL()是oracle数据库中对字段的非空校验,如果字段名为空,则赋值为逗号后面的值。

3、mysql中还有一种if...else的方法if(表达式, 表达式成立的值, 表达式不成立的值)
ifnull("字段名", 值) -- 非空验证。

本回答被网友采纳
第2个回答  推荐于2018-04-12
sql中没有if语句,但有case语句,而且是所有数据库都支持的,
语法是case when 条件1 then 结果1 when 条件2 then 结果2 else 结果N end,
可以有任意多个条件,如果没有默认的结果,最后的else也可以不写,
select case when col1 > 1 then col2 else col3 end from XXXtable本回答被提问者和网友采纳
第3个回答  2018-05-23
首先SQL语句中不能含有if....else...判断语句!
if else语句只有在存储过程中使用,在SQL是不支持的,不过我们有可以替代的方法,使用case when语句解决,各种数据库都支持。
语法:case when col1>1 then col2 when col1<=1 then col3 else '出现错误'
车到山前必有路,问题肯定是可以中找到方法解决的,不要着急
第4个回答  2012-11-05
sql中没有if...else...语句,但有case when语句,能达到你想要的效果。
select case when col1>1 then col2 else col3 end from 表名;