有个表, 其中有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
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("字段名", 值) -- 非空验证。