oracle中case when使用

case...when 条件转换函数
        case when有两种表现形式
         1 case 变量 when 值1 then 结果1
                          when 值2 then 结果2
                  else ‘其它‘ end --else可以选择不要
            示例:
            select ename,job,(
                   case job when ‘MANAGER‘ then job
                            when ‘CLERK‘   then job end)
            from emp;
         2 case when 表达式1 then 结果1
                when 表达式2 then 结果2
            else ‘其它‘ end
            示例:
            select ename,sal,
                   case when deptno=10 then ‘会计部‘
                        when deptno=20 then ‘研究部‘
                        when deptno=30 then ‘销售部‘
             else ‘其它部门‘ end
             from emp;

--在case when中当前面条件筛选过后,后面是从前面剩下的数据中再抽取。
--以scott用户下面emp表为例。
--在进行第二中方法时需要考虑到顺序。
SQL> select t.*,case when t.sal>=3000 then ‘[3000‘
  2                  when t.sal<3000 and t.sal>=2500 then ‘[2500-3000‘
  3                  when t.sal<2500 and t.sal>=1500 then ‘[1500-2500‘
  4                  else ‘<1500‘ end as sal_level
  5            ,case when t.sal>=3000 then ‘[3000‘
  6                  when t.sal>=2500 then ‘[2500-3000‘
  7                  when t.sal>=1500 then ‘[1500-2500‘
  8                  else ‘<1500‘ end as sal_level_test
  9    from emp t;
EMPNO ENAME      JOB         MGR HIREDATE          SAL      COMM DEPTNO SAL_LEVEL  SAL_LEVEL_TEST
----- ---------- --------- ----- ----------- --------- --------- ------ ---------- --------------
 7369 SMITH      CLERK      7902 1980/12/17     800.00               20 <1500      <1500
 7499 ALLEN      SALESMAN   7698 1981/2/20     1600.00    300.00     30 [1500-2500 [1500-2500
 7521 WARD       SALESMAN   7698 1981/2/22     1250.00    500.00     30 <1500      <1500
 7566 JONES      MANAGER    7839 1981/4/2      2975.00               20 [2500-3000 [2500-3000
 7654 MARTIN     SALESMAN   7698 1981/9/28     1250.00   1400.00     30 <1500      <1500
 7698 BLAKE      MANAGER    7839 1981/5/1      2850.00               30 [2500-3000 [2500-3000
 7782 CLARK      MANAGER    7839 1981/6/9      2450.00               10 [1500-2500 [1500-2500
 7788 SCOTT      ANALYST    7566 1987/4/19     3000.00               20 [3000      [3000
 7839 KING       PRESIDENT       1981/11/17    5000.00               10 [3000      [3000
 7844 TURNER     SALESMAN   7698 1981/9/8      1500.00      0.00     30 [1500-2500 [1500-2500
 7876 ADAMS      CLERK      7788 1987/5/23     1100.00               20 <1500      <1500
 7900 JAMES      CLERK      7698 1981/12/3      950.00               30 <1500      <1500
 7902 FORD       ANALYST    7566 1981/12/3     3000.00               20 [3000      [3000
 7934 MILLER     CLERK      7782 1982/1/23     1300.00               10 <1500      <1500

原文地址:https://www.cnblogs.com/wangzihong/p/9058355.html

时间: 2024-10-19 07:33:00

oracle中case when使用的相关文章

oracle中case when的用法

case when 主要是用来给数据赋予便于理解的值, --简单Case函数  CASE sex  WHEN '1' THEN '男'  WHEN '2' THEN '女'  ELSE '其他' END  --Case搜索函数  CASEWHEN sex = '1' THEN '男'  WHEN sex = '2' THEN '女'  ELSE '其他' END 例如,60分一下为差等  60-80 中等   80以上优等 select name , case  when score <60 t

oracle中case when的使用

http://www.cnblogs.com/eshizhan/archive/2012/04/06/2435493.html 1. case when表达式的两种形式: --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜索函数 CASE WHEN sex = '1' THEN '男' WHEN sex = '2' THEN '女' ELSE '其他' END 2. case when在sql

sql与oracle中有关case和decode的用法(行转列)及比较(转

引: 为了举例说明,这里创建了一张成绩表,如下图所示: 比较: 1.sql中,这两个函数我们仅能使用case,代码及结果如下: select name,       case Subject          when '语文' then 1          when '数学' then 2          when '英语' then 3   --else 3       end  as '科目代码'   from Results 同样的,我们可以用case实现行转列,代码及结果如下: s

用sql语句导出oracle中的存储过程和函数

用sql语句导出oracle中的存储过程和函数: SET echo off ; SET heading off ; SET feedback off ; SPOOL 'C:/PRC.SQL' replace SELECT CASE WHEN LINE = 1 THEN 'CREATE OR REPLACE ' || TEXT WHEN LINE = MAX_LINE THEN TEXT || CHR(10 ) || '/' ELSE TEXT END FROM USER_SOURCE A LEF

Oracle中NVARCHAR2字符集不匹配问题

Oracle中在做字符匹配时 遇到 NVARCHAR2 类型时报错,提示 字符集不匹配. 对使用 NVARCHAR2 的地方,需要对字段进行字符转换,加上 to_char(nvarchar2 字段) 即可. 例如: SELECT substr(bm.matnr, 3) wlbm, ms.maktx wlms, bm.meins jldw, bm.matkl wlz , bm.normt gybzms,bm.laeda gxsj,(case to_char(trim(bm.lvorm)) when

oracle中110个常用函数介绍

1. ASCII 返回与指定的字符对应的十进制数; SQL> select ascii(A) A,ascii(a) a,ascii(0) zero,ascii( ) space from dual; A A ZERO SPACE --------- --------- --------- --------- 65 97 48 32 2. CHR 给出整数,返回对应的字符; SQL> select chr(54740) zhao,chr(65) chr65 from dual; ZH C --

Oracle中PL/SQL的执行部分和各种流程控制

Oracle中PL/SQL的执行部分和异常部分 一.PL/SQL的执行部分. 赋值语句. 赋值语句分两种,一种是定义一个变量,然后接收用户的IO赋值:另一种是通过SQL查询结果赋值. 用户赋值举例: set serveroutput on; accept abc prompt '请输入abc的值'; DECLARE a int:= &abc; BEGIN dbms_output.put_line(a); END; 查询赋值举例: set serveroutput on; DECLARE str

oracle中查看当前用户的表结构、主键、索引

1.查询表的所有列及其属性 select t.*,c.COMMENTS from user_tab_columns t,user_col_comments c where t.table_name = c.table_name and t.column_name = c.column_name and t.table_name = 要查询的表 2.查找表的所有索引(包括索引名,类型,构成列) select t.*,i.index_type from user_ind_columns t,user

Oracle中的单行函数

Oracle中的单行函数 1 字符函数 UPPER()--将字符串转换为大写 SELECT UPPER('abc') FROM dual; LOWER()-将字符串转换为小写 SELECT LOWER('ABC') FROM dual; INITCAP()-首字母大写,其它字母小写. SELECT INITCAP('hello') FROM dual; REPLACE()-将指定的字符/字符串替换 SELECT REPLACE('abcd efg','cd','XXX') FROM dual;