加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

oracle语句增加逻辑判断-很实用

发布时间:2020-12-12 16:23:09 所属栏目:百科 来源:网络整理
导读:Oracle提供了一些逻辑判断函数,这些函数可以在查询中使用。 1,针对空值进行测试-NVL函数 函数原型为:NVL(testValue,SubstituteValue) 常见的用法是 Selectmax(score) From SC Where Name=‘Jerry’ 有时max(score)为空,也就是说Jerry并没有考试记录,这

SELECTcourse,SUM(DECODE(class1)AS"Class-11" "Class-22"
FROMstudentinfo
GROUPBYcourse

在这里我们先对class进行测试,若为11,我们返回1,若不是11我们返回0,再对结果进行sum,即可以知道,11班有共有多少同学。再按Course分组,便可以得出:

COURSE Class-11 Class-22
------- -------- -----
Engish 32
Math 23 History 02 这个解决方案有一个限制就是:你必须预先知道有几个class,但若这些class是不固定的,那这个解决方案就不适用了。 针对此限制,SQL部分不太容易解决,可以在程序中workaround.
比如现在加了一个班级号为33的记录: 33 Match A
在程序中动态构建SQL时在From语言之前加入,,SUM (DECODE (CLASS,33,1,0)) AS "Class-33") 3,更可读的逻辑测试-Case语句 上面的Decode函数参数数目不定,看上去容易让人迷糊,Oracle提供了另一种语句来实现类似功能,但可读性更高。 如果我们要针对上表的同学栏位进行重命名: A: Anco B: Bily C: Candy D: Davi E: Eve F: Fion 若我们用Decode可以这样实现: SELECTclass
(student'A''Anco''B''Bily''C''Candy''D''Davi''E''Eve''F''Fion'
ASen_name
FROMstudentinfo

同样的也可以用Case语句实现: SELECTCLASS(CASE student
WHENTHEN'Anco'
WHEN'Bily'
WHEN'Candy'
WHEN'Davi'
WHEN'Eve'
WHENEND 转自:http://blog.chinaunix.net/uid-576762-id-2733790.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

Oracle提供了一些逻辑判断函数,这些函数可以在查询中使用。 1,针对空值进行测试-NVL函数 函数原型为:NVL(testValue,SubstituteValue) 常见的用法是 Selectmax(score) From SC Where Name=‘Jerry’ 有时max(score)为空,也就是说Jerry并没有考试记录,这时我们用"No Record"标注一下: Select NVL(max(score),"No Record") From SC; 还有一个NVL2函数跟其相似,函数原型为: NVL(testValue,SubValue1,SubValue2) NVL2函数实现的是若testValue为NULL,返回SubValue1,否则返回SubValue2。 2,更广泛意义上的测试-Decode函数 Decode函数的原型为: Decode(testValue,if1,then1,if2,then2.....else). 针对testValue进行测试,若testValue等于if1则返回then1,若testValue等于if2则返回then2,....若都没有返回,刚返回else. 常见用法是在Oracle中实现行转列(Convert Rows to Columns). CLASSCOURSESTUDENT
----- ------ ------
11 Engish D
11 Engish F
11 Engish E
11 Math F
11 Math D
22 Engish C
22 Engish B
22 History A
22 History B
22 Math B
22 Math C
我想针对知道11和22班选修English,Math,History各有多少名同学。
    推荐文章
      热点阅读