`
929118967
  • 浏览: 20428 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
博客专栏
Fcebf22e-9505-38db-b3f2-65fdcc3fd6a5
java开发的深入浅出
浏览量:6921
文章分类
社区版块
存档分类
最新评论

SQL中Case的使用方法以及nvl的使用案例

 
阅读更多
1.SQL中Case的使用方法
Case具有两种格式。简单Case函数和Case搜索函数。
--简单Case函数
CASE sex
WHEN '1' THEN '男'
WHEN '2' THEN '女'
ELSE '其他' END
--Case搜索函数
CASE WHEN sex = '1' THEN '男'
WHEN sex = '2' THEN '女'
ELSE '其他' END
这两种方式,可以实现相同的功能。简单Case函数的写法相对比较简洁,但是和Case搜索函数相比,功能方面会有些限制,比如写判断式。
还有一个需要注意的问题,Case函数只返回第一个符合条件的值,剩下的Case部分将会被自动忽略。
2.nvl(字段,默认值) 用于判断字段是否为空,用于处理空值的。若为空,返回指代的值,否则返回本身字段的值。
3.案例:
需求:在商户表(URMTMINF)
中根据信用级别CRED_LVL查询商户信息(含有业务代码字段MERC_TRD_CLS)。
将根据查询到的业务代码,到对应URMTTRADECONF表查询业务描述(MERC_TRD_DESC)。
其中先根据旧关联f.MERC_TRD_CLS_OLD=B.MERC_TRD_CLS,如果业务描述为空,在根据新字段关联WHERE MERC_TRD_CLS = B.MERC_TRD_CLS,如果仍为空,就赋予常量‘其他’
sql:
SELECT B.MERC_ID,
B.MERC_CNM,
B.MERC_ABBR,
(CASE
WHEN B.MERC_PROV IS NOT NULL THEN
(SELECT FLD_EXP
FROM PUBTHLP
WHERE FLD_NM = 'PROV_CD'
AND FLD_VAL = B.MERC_PROV)
ELSE
B.MERC_PROV
END) AS MERC_PROV_DESC,
(CASE
WHEN B.MERC_TYP IS NOT NULL THEN
(SELECT FLD_EXP
FROM PUBTHLP
WHERE FLD_NM = 'MERC_TYP'
AND FLD_VAL = B.MERC_TYP)
ELSE
B.MERC_TYP
END) AS MERC_TYP_DESC,
(CASE
WHEN B.CRED_LVL IS NOT NULL THEN
(SELECT FLD_EXP
FROM PUBTHLP
WHERE FLD_NM = 'MERC_LVL'
AND FLD_VAL = B.CRED_LVL)
ELSE
B.CRED_LVL
END) AS CRED_LVL_DESC,
(CASE
WHEN B.MERC_TRD_CLS IS NOT NULL THEN
NVL(NVL((CASE
WHEN (SELECT COUNT(MERC_TRD_DESC) FROM payadm.URMTTRADECONF
WHERE MERC_TRD_CLS_OLD = B.MERC_TRD_CLS)>1 THEN
(SELECT DISTINCT MERC_TRD_DESC1
FROM payadm.URMTTRADECONF
WHERE MERC_TRD_CLS_OLD = B.MERC_TRD_CLS)
ELSE
(SELECT MERC_TRD_DESC
FROM payadm.URMTTRADECONF
WHERE MERC_TRD_CLS_OLD = B.MERC_TRD_CLS)
END), (SELECT MERC_TRD_DESC
FROM payadm.URMTTRADECONF
WHERE MERC_TRD_CLS = B.MERC_TRD_CLS)), '其他') ELSE '其他' END) AS MERC_TRD_DESC
FROM URMTMINF B
WHERE CRED_LVL = ?
分享到:
评论

相关推荐

    SQL语句的DECODE和NVL

    SQL语句的DECODE和NVL,肯定能帮到你,好用!

    nvl的相关函数描述

    nvl的相关函数,nvl的相关函数,nvl的相关函数

    Oracle表空间查看sql使用情况

    DBA在日常工作中,最重要的一点就是查看表空间的使用情况,去了解是否有表空间满了的情况出现。 具体方法和步骤如下所示: 第一步:打开PLSQL 第二步:新建一个SQL窗口 第三步:输入代码: select a.tablespace_...

    oracle中nvl、decode、trim、rtrim的常见用法

    列举oracle中nvl、decode、trim、rtrim的常见用法

    深入浅析Orcale的nvl函数和SQL Server的isnull函数

    Orcal 的 nvl函数 NVL(Expr1,Expr2)如果Expr1为NULL,返回Expr2的值,否则返回Expr1的值,Expr1,Expr2都为NULL则返回NULL NVL2(Expr1,Expr2,Expr3)如果Expr1为NULL,返回Expr2的值,否则返回Expr3的值 NULLIF(Expr1,...

    oracle的nvl函数的使用介绍

    Oracle的Nvl函数 nvl( ) 函数 从两个表达式返回一个非null 值。 语法 NVL(eExpression1, eExpression2) 参数 eExpression1, eExpression2 如 果 eExpression1 的计算结果为 null 值,则 NVL( ) 返回 eExpression2。...

    SQL培训第一期

    结构化查询语言(Structured Query Language)简称SQL,是一种关系数据库查询语言,用于存取数据以及查询、更新和管理关系数据库系统。 1.2 语句结构 1.2.1 数据查询语言(DQL) 对数据库进行的信息查询,select。 ...

    Oracle-Decode()函数和CASE语句的比较

    本文讲述了Oracle-Decode()函数和CASE语句的比较。

    SQL 基础--SELECT 查询

    在SQL*Plus中, 你要用一个分号结束每个SQL 语句.(;) 三、SQL*PLUS特征: 字符日期左对齐 数字右对对齐 列名默认大写 SQL PLUS 自己的命令不需以分号“;”结束 四、SQL查询时,数字和日期类型的数据可用...

    浅谈Mysql中类似于nvl()函数的ifnull()函数

    IFNULL()返回一个数字或字符串值,取决于它被使用的上下文环境。 mysql> select IFNULL(1,0); -> 1 mysql> select IFNULL(0,10); -> 0 mysql> select IFNULL(1/0,10); -> 10 mysql> select IFNULL(1/0,'yes'); ...

    2009达内SQL学习笔记

    通配符在搜索模式中任意位置使用,并且可以使用多个通配符。 通配符%表示任何字符出现任意次数;还能代表搜索模式中给定位置的0个或多个字符。下划线匹配单个任意字符。 如:select table_name from user_tables ...

    sql精妙用法,希望能对大家有所帮助

    说明:两张关联表,删除主表中已经在副表中没有的信息 delete from info where not exists ( select * from infobz where info.infid=infobz.infid ) 说明:-- SQL: SELECT A.NUM, A.NAME, B.UPD_DATE, B.PREV_...

    C# 访问Oracle示例+PL/SQL+存储过程+触发器 完整示例 测试可用 易懂

    PL/SQL中不能直接使用数据定义语言,而动态sql中允许 sql_str:='select id, name from producttype where id=:type_id'; execute immediate sql_str into trow using tid; --将查询的结果给trow,查询语句中用到的...

    日常收集常用SQL查询语句大全

    常用sql查询语句如下所示: 一、简单查询语句 1. 查看表结构 SQL>DESC emp; 2. 查询所有列 SQL>SELECT * FROM emp;...SQL>SELECT ename, sal*13+nvl(comm,0) FROM emp; nvl(comm,1)的意思是,如果co

    Oracle数据库、SQL

    1.16课程中使用的5个表 3 二、 select from语句 5 2.1 select语句功能 5 2.2 select语句基本语法 5 2.3列别名 5 2.4算术表达式 5 2.5空值null的处理 5 2.6 nvl(p1,p2)函数 5 2.7拼接运算符 || 6 2.8文字字符串 6 2.9...

    SQL进阶及工作中常用SQL

    1.工作中常用sql排行 ①group by(用来聚合也时常用来去重注意用groupby select 后要跟聚合字段) ②where(SQL计算之前进行过滤,对性能是极大的提高,代码测试阶段where条件下尽量跟分区) ③having(SQL计算之后进行过滤...

    SQL语句复习,SQL面试题

    如果字符串中本身就有一个单引号 那么在SQL语句中进行表示时 用两个单引号表示一个单引号 14 select distinct deptno from emp;select distinct deptno job from emp; 15 select from emp where ename "CLARK&...

    UNION ALL 的使用方法

    NVL(SUM(A.AMOUNT),0) INTO W_ATS_RE_BOOKED_AMT FROM XXXXXXXXX A, ( SELECT B.TRD_NO FROM XXXXXXXXX B WHERE B.CLIENT_CD = W_IN_CLIENT_CD UNION ALL SELECT C.TRD_NO FROM XXXXXXXXX C WHERE...

    浅谈Mysql中类似于nvl()函数的ifnull()函数.pdf

    浅谈Mysql中类似于nvl()函数的ifnull()函数.pdf

    SQL基本语句练习

    查询emp表中的员工号、员工姓名、工种、工资,以及员工总收入(工资奖金之和),并按工资奖金之和升序排序。 select empno,ename,job,sal ,sal+nvl(comm,0)from emp order by sal+nvl(comm,0) asc;

Global site tag (gtag.js) - Google Analytics