Oracle的sql语句中case关键字的用法

例子1:

a)查询列中有"_"开头的列名时,需要用双引号引起来。

b)使用"case"关键字,根据分数直接判断是否及格。

create table tbl_score(
    id NUMBER(4), --id
    name varchar2(30), --名称
    score NUMBER(3), --分数
    otherscore NUMBER(3) --其他分数
);
select t.id as "_id",
       t.name as name,
       case
           when t.score >= 60 then
            ‘及格‘
           else
            ‘不及格‘
       end as ‘是否及格‘,
       t.score as ‘分数‘   from tbl_score t;

例子2:

根据情况返回不同列的值。

同用上面的tbl_score表。

select t.id as "_id",
       t.name as name,
       case
           when t.score is null then
            t.otherscore  --也可返回固定值
           else
            t.score
       end as ‘分数‘
  from tbl_score t;
时间: 12-19

Oracle的sql语句中case关键字的用法的相关文章

SQL语句中的select高级用法

为了更好的了解下面的知识点,我们先创建两张表并插入数据. # 学生表 +----+-----------+------+--------+--------+--------+-----------+ | id | name | age | height | gender | cls_id | is_delete | +----+-----------+------+--------+--------+--------+-----------+ | 1 | 小明 | 18 | 180.00 | 女

Oracle的SQL语句中的变量替换

一.问题描述 如下SQL: INSERT INTO tmp(val)VALUES('a&b'); 执行过程中会出现如下提示: 点击"确定"过后我们查看表中的数据: b后面的字符串没有插入进去. 二.原因解析--替代变量 SQL*PLUS中默认的"&"表示替代变量,当写入&时,数据库会要求其替换成其它的值. 如,你可以定义: 这样插入数据库中的值就是ahellob. 三.解决方法 解决方法1:关闭变量替换 如下所示: SET DEFINE OF

Oracle的sql语句中关键字冲突用双引号

select distinc user from instrument where created>"TO_DATE"('2015-02-05 12:00:00', 'yyyy-mm-dd hh24:mi:ss') ———————————————————————————————————————————————————————————————————— select distinc “user” from instrument where created>"TO_D

oracle的SQL语句中的(+) 左外连接

SELECT s.name AS 姓名,g.grade AS 分数,c.cid AS 课程名 FROM tbl_student s LEFT OUTER JOIN tbl_grade g ON s.StudentId=g.sid LEFT OUTER JOIN tbl_class c ON g.cid=c.ClassId 它跟下面等价 SELECT s.name AS 姓名,g.grade AS 分数,c.classname AS 课程名 FROM tbl_student s,tbl_grade

SQL语句中OVER函数的用法

over不能单独使用,要和分析函数:rank(),dense_rank(),row_number()等一起使用.其参数:over(partition by columnname1 order by columnname2)含义:按columname1指定的字段进行分组排序,或者说按字段columnname1的值进行分组排序.例如:employees表中,有两个部门的记录:department_id =10和20select department_id,rank() over(partition

SQL语句中 chinese_prc_CS_AI_WS 以及replace用法

Select * from [DBData].[dbo].[T_Student] where Name='lilei' 查询结果如下: 结论:由查询结果可知 SQL Server 默认是不区分大小写的. Select * from [DBData].[dbo].[T_Student] where Name like '%(%' COLLATE chinese_prc_CS_AI_WS 查询结果如下: 排序规则名称由两部份构成,前半部份是指本排序规则所支持的字符集.如: Chinese_PRC_C

oracle sql语句中使用if逻辑

l在 SQL 语句中使用IF-THEN-ELSE 逻辑 l l使用两种方法: •CASE 表达式:SQL99的语法,类似Basic,比较繁琐 •DECODE 函数:Oracle自己的语法,类似Java,比较简介 1 SQL> select ename,job, sal, case job when 'PRESIDENT' then 1.1*sal 2 2 when 'MANAGER' then 1.2*sal 3 3 when 'CLERK' then 1.3*sal 4 4 else 1.4*

获取oracle sql语句中绑定变量值的方法

在诊断 sql的性能问题时,我们有时候需要获取其绑定变量的实际值,然后将此实际值带入到sql语句当中,用原来的sql构成select语句(带where条件),实际的执行一下,看一下选择性如何. 本文就是说获取其绑定变量值的方法.本文的编写得到枯荣长老的帮助,在此表示感谢. 本文适用于与oracle 10G或者更高版本的db. alter session set nls_date_format = 'yyyy-mm-dd,hh24:mi:ss'; set linesize 400 col sql_

db2和oracle sql 语句中计算两个时间差的语法

db2 sql语句中计算两个日期相差的语法 结束日期为:2015-10-10  11:30:00 开始日期为:2015-09-09  10:40:00 (1)timestampdiff(8,char(结束时间-开始时间) )(加时分秒计算,会舍去零数)值为744小时 (2)(days(结束时间)-days(开始时间))*24 +hour(结束时间)-hour(开始时间) (不加时分秒计算)值为745小时 (3)Days(结束日期)-days(开始日期)的值为31天 (4)Day(结束日期)-da