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

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等价改写优化案例精选

    ### SQL等价改写优化案例精选 #### 概述与重要性 在IT行业中,数据库性能的优化一直是提升系统响应速度、降低资源消耗的关键。其中,SQL查询优化扮演着至关重要的角色。SQL优化不仅涉及执行计划的理解,更根本的是...

    Oracle11g SQL基础-实验手册.pdf

    特别重要的是如何显示某列的唯一值,以及在SQL语句中使用加、减、乘、除等操作,处理NULL值的检索和计算,以及SQL连接符和单引号的使用。Alias字段别名的使用和连接符(||)的应用也是本章内容的一部分。最后,介绍...

    SQL培训第一期

    8. **函数**:如聚合函数`COUNT`、`SUM`、`AVG`、`MAX`和`MIN`,以及`CASE WHEN`、`DECODE`、`NVL`、`NULLS FIRST/LAST`、`WM_CONCAT`、`EDIT_DISTANCE_SIMILARITY`等,用于数据处理和分析。 9. **存储过程**:预...

    使用SQL Profile进行SQL优化案例

    具体联接包括`bs_insured`, `mt_biz_fin`, `mt_pay_record_fin`, `bs_disease`, `bs_hospital`, `bs_hosp_level`, `bs_biztype`, `bs_corp`等表,并且有多种条件过滤和聚合操作,如`SUM()`, `NVL()`, `CASE WHEN`等...

    Oracle SQL 内置函数总结

    以上是Oracle SQL内置函数的一些主要知识点,实际使用中还有许多其他函数,如日期间隔计算、转换函数等,都需要根据具体需求灵活运用。在学习和使用这些函数时,建议结合实际例子进行实践,以便更好地理解和掌握其...

    Oracle数据库、SQL

    - **NULL处理** SQL中的NULL表示未知,可以使用`IS NULL`或`IS NOT NULL`进行判断。 - **NVL函数** 用来处理NULL值,如 `NVL(column, default_value)`,当column为NULL时,返回default_value。 - **拼接运算符** ...

    达梦数据库_SQL语言手册

    - **8.11 附加分离数据库**: 支持将数据库附加到另一个实例或将数据库从实例中分离。 #### 9. 一致性和并发性 - **9.1 DM事务相关语句** - **9.1.1 事务的开始**: 开始一个新的事务。 - **9.1.2 事务的结束**: ...

    Oracle_SQL_function.rar_oracle

    本资料“Oracle_SQL_function”主要聚焦于Oracle中的常用函数及其使用方法,旨在帮助用户更好地理解和掌握在Oracle环境中进行SQL操作。 一、字符串函数 1. CONCAT():用于连接两个或更多字符串。例如,CONCAT('...

    Oracle的几个Function实例

    在"Oracle的几个Function实例"这个主题中,我们将探讨一些常见的Oracle函数,并通过实际示例来理解它们的用法。 1. ** NVL 函数**: NVL函数用于处理空值(NULL)。如果一个字段的值为NULL,NVL函数会将其替换为你...

    oracle行转列oracle行转列

    在Oracle数据库中,将行数据转换为列数据是一种...总结来说,Oracle中的行转列操作主要依赖于`DECODE`函数和`GROUP BY`子句,以及动态SQL技术,这些工具可以帮助我们更有效地管理和展示数据,满足复杂的数据分析需求。

    Oracle程序员面试真题(附答案解析)(1).doc

    - **解析**: 外连接的条件应当放置在 `FROM` 子句中,通过使用 `(+)` 符号来指示哪些表参与外连接以及哪些列是外键。 - **答案**: A. FROM #### 二、简答题知识点解析 **11. Oracle 软件的体系结构图** - **知识...

    几个常用的Oracle函数及实例运用

    本文将详细介绍几个常用Oracle函数及其在实际项目中的应用案例。 #### 二、常用Oracle函数详解 ##### 1. NVL 函数 NVL 函数用于替换NULL值,当第一个参数为NULL时,返回第二个参数的值;否则返回第一个参数的值。 ...

    Oracle_Database_11g完全参考手册.part3/3

    第16章 DECODE和CASE.SQL中的if-fhen-else 第17章 创建和管理表、视图、索引、群集和序列 第18章 分区 第19章 Oracle基本安全 第Ⅲ部分 高级主题 第20章 高级安全性-虚拟专用数据库 第21章 高级安全性:透明数据加密...

    Oracle_Database_11g完全参考手册.part2/3

    第16章 DECODE和CASE.SQL中的if-fhen-else 第17章 创建和管理表、视图、索引、群集和序列 第18章 分区 第19章 Oracle基本安全 第Ⅲ部分 高级主题 第20章 高级安全性-虚拟专用数据库 第21章 高级安全性:透明数据加密...

    Oracle数据库讲义.pdf

    - **实验16**:掌握CASE表达式的使用,以便根据条件返回不同的值。 - **实验17**:了解聚合函数(如SUM、AVG等)的使用,对数据进行分组统计。 - **实验18**:掌握表连接(INNER JOIN、LEFT JOIN等)的操作,以...

    Oracle课程目录

    - **连接条件**:解释JOIN操作中ON子句的使用方法。 - **自然连接**:介绍自然连接(NATURAL JOIN)的特点和局限性。 - **自连接**:演示如何实现表与自身的连接。 #### 18. 左、右连接 - **LEFT JOIN和RIGHT JOIN...

    oracle decode

    除了DECODE,Oracle还提供了其他类似的函数,如NVL(用于处理NULL值)、COALESCE(也用于处理NULL值,但支持多个参数,当第一个非NULL参数出现时返回)以及CASE表达式,它们都是在SQL查询中处理复杂逻辑的利器。...

    Oracle教程(二) 基础 教程

    以上内容涵盖了Oracle数据库基础教程中有关分组函数的重要知识点,以及如何使用这些函数进行数据分析和汇总。通过对这些概念的理解和掌握,可以极大地提高使用Oracle数据库进行数据处理的能力。

Global site tag (gtag.js) - Google Analytics