oracle 条件语句的写法

摘要:
BEGINIFI=1thedbms_outputput _ LINE('TRUE');ELSEDBMS_outputput _ LINE(“FALSE”);3THENDBMS_输出_线('3');ELSEDBMS_outputput _ LINE(“0”);3.解码语法--Decode('condition','FALSE')FROMDUAL;

1.基本的if else

DECLARE
 I INT :=1;
 BEGIN
     IF I=1 THEN
       DBMS_OUTPUT.PUT_LINE('TRUE');
     ELSE
        DBMS_OUTPUT.PUT_LINE('FALSE'); 
     END IF;
 
 END;

2.这里用的是elsif 而不是 else if(注意区分一下就行了)

DECLARE
I INT :=1; --如果I=1 满足第一个条件之后,就不会再走第二个条件
           --如果I=5,则直接走最后的一个条件
BEGIN
    IF I<4 THEN
      DBMS_OUTPUT.PUT_LINE('4');
    ELSIF I<3 THEN
      DBMS_OUTPUT.put_line('3');
    ELSIF I<2 THEN
      DBMS_OUTPUT.PUT_LINE('2');
    ELSE
        DBMS_OUTPUT.PUT_LINE('0');
    END IF;  
END;

3.decode语法

--DECODE('条件',值1,真,假)
--简单实例一

SELECT DECODE((2-2),0,'TRUE','FALSE') FROM DUAL;  --结果返回true

--简单实例二;比较两个数的大小;
--先介绍一函数的使用sign() 它只会返回三个值:1 0 -1

SELECT SIGN(2-1) FROM DUAL; --正数就返回1

SELECT SIGN(2-2) FROM DUAL;  --0 就返回0

SELECT SIGN(2-3) FROM DUAL; --负数就返回-1

--然后配合它 我们可以比较两个数的大小滴呀

DECLARE 
    I INT :=2;
    J INT :=3;
    RESULT INT :=0;
    BEGIN 
    SELECT DECODE(SIGN(I-J),-1,I,J) INTO RESULT FROM DUAL; --比较连个数,求最小或者最大的数
    DBMS_OUTPUT.put_line(RESULT); --这样我们就求出了最小的一个数值滴呀
    END;


--实例三(字段)
DECLARE 
    NAME VARCHAR2(99) :='DD';
    RESULT VARCHAR2(99) ;
    BEGIN
    SELECT DECODE(NAME,'JACK','JACK','TOM','TOM','DEFAULUT') INTO RESULT FROM DUAL;
    --第一个参数值 也可以是我们的字段;
    --字段,比较,值1,比较,值2,默认值
    --进行这样的基本模式比较低呀
     DBMS_OUTPUT.put_line(RESULT);
    END;

  DECODE的应用 ,下面我们看这样的一个需求;

CREATE TABLE STUINFO( 
 ID NUMBER,
 NAME VARCHAR2(40),
 SEX VARCHAR2(4)
)

INSERT INTO STUINFO VALUES(1,'JACK','');

INSERT INTO STUINFO VALUES(2,'TOM','');

INSERT INTO STUINFO VALUES(3,'ANDY','');

INSERT INTO STUINFO VALUES(4,'CANDY','');

COMMIT;

--现在我们来统计班上 男生多少人,女生多少人;
--方法一;
SELECT COUNT(*) FROM STUINFO WHERE SEX='';

SELECT COUNT(*) FROM STUINFO WHERE SEX='';

--方法二;(如果id没有重复的话)
--我们再求一次和
--方法虽然有点绕弯,但是可以锻炼我们写sql语句的能力滴呀
SELECT SUM(MEN_COUNT) "男生总和",SUM(FEMEL_COUNT) "女生总和" FROM (
SELECT ID,
SUM(CASE SEX WHEN '' THEN 1 ELSE 0 END) "MEN_COUNT",
SUM(CASE SEX WHEN '' THEN 1 ELSE 0 END) "FEMEL_COUNT"
FROM STUINFO
GROUP BY ID
)

--方法三,自然就用到我们的DECODE
--这样用起来的 相当的方便
 SELECT SUM(DECODE(SEX,'',1,0)) "MEN_TOTAL", SUM(DECODE(SEX,'',1,0)) "女生总和" FROM  STUINFO

4.case when 的用法

  关于学生等级的分法;

--关于学生成绩 分等级的计算滴呀
--CASE WHEN 字段  THEN 的用法;
SELECT NAME,
CASE WHEN GREADE >85 THEN '优秀'
     WHEN GREADE >70 THEN '良好'
     WHEN GREADE >60 THEN '及格'
     ELSE '不及格'
     END "等级"
FROM STU

--然后是我们DEcode 的使用方法滴呀

 SELECT NAME, DECODE(SIGN(GREADE-85),1,'优秀',0,'优秀',-1,
 DECODE(SIGN(GREADE-70),1,'良好',0,'良好,-1',
 DECODE(SIGN(GREADE-60),1,'及格',0,'及格',-1,'不及格')
 )) "等级"
 FROM STU

免责声明:文章转载自《oracle 条件语句的写法》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Cloud9 使用 GitHubXML导入Access/MySql数据库 XML2OleDb Fred下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

前端json数据格式化显示

1、格式化处理 1 var obj = "...";//json格式的字符串 2 var jsonPretty = JSON.stringify(JSON.parse(obj),null,2); 2、显示 只需把格式化处理后的json字符串数据放到 pre标签 中即可。 3、demo js代码(直接是对象,所以省略JSON.parse操作) 1 let...

mysql的log_output参数

log_output背景 log_output参数是什么意思?表示慢日志输出到文件还是表中。 show global variables like 'log_output'; 默认参数,log_output='FILE',表示慢日志输出到了文件中。 set global log_output='TABLE'; 此时慢日志就输出到了mysql数据库的系统表...

使用PostgreSQL的bytea字段存读取文件及读取出错问题处理

  PostgreSQL中的bytea字段类型可以以二进制的形式存储数据,这样做的好处就是可以将原本存储在网站目录下的文件存储到数据库中,坏处就是如果文件过多、过大的话,就会导致数据库的数据量大大增加,备份和恢复的时候就会浪费大量的时间,而且数据也有可能会出错。个人觉得,在文件量小的情况下,使用这种存储方式还是很方便的。   言归正传,下面介绍一下使用by...

python接口自动化测试八:更新Cookies、session保持会话

python接口自动化测试八:更新Cookies、session保持会话  s = requests.session()  # 此方法只适用于网站是cookies这种,网站是token的没用             # 这样做的好处就是可以保存cookies并保持会话,不用每次都去获取、传参     Token请求:                   ...

Halcon 学习笔记--颜色识别(7)

一、颜色         RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是运用最广的颜色系统之一。        HSV 是根据颜色的直观特性创建的一种颜色空间, 也称六角锥体模型...

Extjs4——表格控件

1.一个表格的简单形式: columns定义表格的结构,包括首部显示文本(header),列对应的记录集字段(dataIndex),列是否排序(sortable),列的渲染函数(renderer),宽度(width),格式化信息(format) data定义表格要显示的数据(原始数据) store为数据存储对象,它负责将各种原始数据转换成Ext.data....