CASE表达式在Oracle8i被加入到SQL中,Oracle9i对其进行了扩展,使CASE表达式和CASE语句可以用在PL/SQL中。值匹配CASE表达式,较D
CASE表达式在Oracle8i被加入到SQL中,Oracle9i对其进行了扩展,使CASE表达式和CASE语句可以用在PL/SQL中。
值匹配CASE表达式
较DECODE函数而言,CASE表达式更灵活。其最简单的应用方式时当匹配成功时返回特定值。
SELECT ename, empno,
(CASE deptno
WHEN 10 THEN 'Accounting'
WHEN 20 THEN 'Research'
WHEN 30 THEN 'Sales'
WHEN 40 THEN 'Operations'
ELSE 'Unknown'
END) department
FROM emp
ORDER BY ename;
CASE表达式也可以用在PL/SQL中。
SET SERVEROUTPUT ON
DECLARE
deptno NUMBER := 20;
dept_desc VARCHAR2(20);
BEGIN
dept_desc := CASE deptno
WHEN 10 THEN 'Accounting'
WHEN 20 THEN 'Research'
WHEN 30 THEN 'Sales'
WHEN 40 THEN 'Operations'
ELSE 'Unknown'
END;
DBMS_OUTPUT.PUT_LINE(dept_desc);
END;
/
搜索CASE表达式
在搜索CASE表达式中,比较表达式被用来作为匹配条件。此方式下,比较条件不再限于一列。
SELECT ename, empno,
(CASE
WHEN sal
WHEN sal BETWEEN 1000 AND 3000 THEN 'Medium'
WHEN sal > 3000 THEN 'High'
ELSE 'N/A'
END) salary
FROM emp
ORDER BY ename;
搜索CASE表达式也可以应用于PL/SQL中。
SET SERVEROUTPUT ON
DECLARE
sal NUMBER := 2000;
sal_desc VARCHAR2(20);
BEGIN
sal_desc := CASE
WHEN sal
WHEN sal BETWEEN 1000 AND 3000 THEN 'Medium'
WHEN sal > 3000 THEN 'High'
ELSE 'N/A'
END;
DBMS_OUTPUT.PUT_LINE(sal_desc);
END;
/
值匹配CASE语句
PL/SQL中还支持值匹配CASE语句,用法和CASE表达式非常相似,主要的差别是CASE语句以END CASE结尾,,而不是像CASE表达式那样以END结尾。CASE语句可以作为IF..THEN..ELSEIF的替代品。
SET SERVEROUTPUT ON
BEGIN
FOR cur_rec IN (SELECT ename, empno, deptno FROM emp ORDER BY ename) LOOP
DBMS_OUTPUT.PUT(cur_rec.ename || ' : ' || cur_rec.empno || ' : ');
CASE cur_rec.deptno
WHEN 10 THEN
DBMS_OUTPUT.PUT_LINE('Accounting');
WHEN 20 THEN
DBMS_OUTPUT.PUT_LINE('Research');
WHEN 30 THEN
DBMS_OUTPUT.PUT_LINE('Sales');
WHEN 40 THEN
DBMS_OUTPUT.PUT_LINE('Operations');
ELSE
DBMS_OUTPUT.PUT_LINE('Unknown');
END CASE;
END LOOP;
END;
/
搜索CASE语句
就像搜索CASE表达式一样,该语句可以进行多个变量的比较。
SET SERVEROUTPUT ON
BEGIN
FOR cur_rec IN (SELECT ename, empno, sal FROM emp ORDER BY ename) LOOP
DBMS_OUTPUT.PUT(cur_rec.ename || ' : ' || cur_rec.empno || ' : ');
CASE
WHEN cur_rec.sal
DBMS_OUTPUT.PUT_LINE('Low');
WHEN cur_rec.sal BETWEEN 1000 AND 3000 THEN
DBMS_OUTPUT.PUT_LINE('Medium');
WHEN cur_rec.sal > 3000 THEN
DBMS_OUTPUT.PUT_LINE('High');
ELSE
DBMS_OUTPUT.PUT_LINE('Unknown');
END CASE;
END LOOP;
END;
/
伴沃教育还为您提供以下相关内容希望对您有帮助:
oracle数据库case问题
在存储过程中,case语句when后都要加分号而case表达式中不需要 你看这个是表达式的 case有两种表达式:1. 简单Oracle case表达式,使用表达式确定返回值.语法:case search_expression WHEN expression1 THEN result1 WHEN expression2 THEN result2 ...WHEN expressionN THEN resultN ELSE default_result END...
oracle 报CASE的方法
Select Case <变量名> Case <情况1> …… Case <情况2> …… Case <情况3> …… …… …… Case Else …… End Select <情况>为变量的数据:例如:select case when a>0 then 1 else 2 end as ui 相当于一个判断,此处是表示:如果a大于0就返回1,否则返回2;只是其中一种用法,睇...
oracle case when的用法
ORACLE CASE WHEN其实就相当于我们程序当中的IF语句,他的语法结构是:CASE WHEN "条件表达式" THEN"语句1"ELSE,"语句2"END。CASE WHEN "条件表达式" THEN,"语句1",ELSE,"语句2",END。意思相信大家都明白,当条件满足时持行语句1,否则持行语句2其实他的用处很多,如对SELECT中字段进行处理:...
oracle case的这种写法怎么对应多个值 case x when……
1、先创建测试表如下:create table TEST_SRC_ANA_TABLES (owner VARCHAR2(30) not null,table_name VARCHAR2(100) not null,db_name VARCHAR2(30))并插入数据如下,2、编写case x when ...的脚本:3、也可以写成case when x... when x...的脚本:...
oracle中做view时,怎么把case语句作为条件语句
CASE <变量> WHEN <表达式1> THEN 值1 WHEN <表达式2> THEN 值2 ……WHEN <表达式n> THEN 值n ELSE 值n + 1 END CASE;小例子 SET ServerOutput ON;DECLARE varDAY INTEGER := 3;Result VARCHAR2(20);BEGIN Result := CASE varDAY WHEN 1 THEN '星期一'WHEN 2 THEN '星期二'WHEN 3...
请教Oracle Case When用法
第一种形式:CREATE OR REPLACE FUNCTION GET_SALARY1(ENAME IN VARCHAR2) RETURN NUMBER AS BEGIN CASE WHEN ENAME='ZXQ' THEN RETURN 1;WHEN ENAME='TJH' THEN RETURN 2;WHEN ENAME='HLW' THEN RETURN 3;ELSE RETURN 0;END CASE;END GET_SALARY1;第二种形式:只适用于表达式的值在有限且...
在oracle sql语句里有没有if...else...的用法,请各位大侠给个例子看看...
oracle 中if ..else 可以再pl/sql 中使用,如果是要在SQL语句中达到这种效果可以用case when ... then ...else ..end;mysql数据库中CASE WHEN语句。case when语句,用于计算条件列表并返回多个可能结果表达式之一。CASE 具有两种格式:简单CASE 函数将某个表达式与一组简单表达式进行比较以确定结果。CASE 搜索函数计...
急,急Oracle中的 “ ||”和 case 是什么意思??高手指点
|| 是连接字符串, case我也没用过。
oracle 中case when then 字符串
select a.node,b.BUSINESS_LIST from A1 a left join B1 b on a.node = b.node and REGEXP_LIKE(A.BUSINESS_LIST,B.BUSINESS_LIST);这样子就可以了。
oracle case when用法是怎么样的?
oracle case when用法是:1、导入用户(从用户scott导入到用户scott)。impdp scott/tiger@orcl directory=dump_dir dumpfile=expdp。dmp schemas=scott。2、导入表(从scott用户中把表dept和emp导入到system用户中)。impdp system/manager@orcl directory=dump_dir。dumpfile=expdp。dmptables=scott。dept...