1.情景展示

  判断某个字段的值,如果以APP开头,需查询APP表里对应的数据;如果是以JG开头,就查询机构对应的表。

2.原因分析

  如果使用CASE WHEN THEN或者IF ELSIF 太麻烦,可以通过decode()函数实现哦。

语法说明:

  DECODE(VALUE,IF1,THEN1,IF2,THEN2,ELSE) 是对CASE WHEN 的简化

  我们对于decode()函数的应用一般是这样的

SELECT decode(t.medstepcode,
'010101',
'挂号',
'010102',
'诊断',
'010103',
'取药',
'010104',
'检查',
'010105',
'收费',
'010106',
'开方',
'010107',
'手术',
'000000',
'其他',
'挂号') medStepName /* 诊疗环节名称 */
FROM VIRTUAL_CARDLOG T

  这样,查询结果会将对应的数字字符串替换文字。

3.解决方案

  错误用法:直接跟sql

  结果执行报错。

  正确用法:sql需要用括号包住即可。

SELECT to_char(t.logtime, 'yyyyMMdd-HH24mmss') time /* 用卡时间 */,
'0' cardType, /* 电子健康卡 */
t2.id_card atr, /* 身份证号 */
t2.identifier issueOrgCode, /* 发卡机构代码 */
(decode(instr(t2.identifier, 'APP'),
0, /* 不是以APP开头 */
(select t3.orgname
from org_access t3 /* 接入机构 */
where t3.id = t2.identifier),
(select t4.appname
from app_access t4 /* 接入APP */
where t4.id = t2.identifier))) issueOrgName /* 发卡机构名称 */
FROM VIRTUAL_CARDLOG T, VIRTUAL_CARD T2
WHERE T.VIRTUAL_ID = T2.ID

  说明:instr()函数是判断某个字符串内是否包含指定字符串,在这里不影响判断。

4.结果展示

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

相关推荐:

 

oracle decode()函数的参数原来可以为sql语句!的更多相关文章

  1. Oracle DECODE函数的语法介绍

    Oracle DECODE函数功能很强,下面就为您详细介绍Oracle DECODE函数的用法,希望可以让您对Oracle DECODE函数有更多的了解. Oracle DECODE函数 Oracle ...

  2. Oracle DECODE函数的用法详解

    Oracle DECODE函数使用方法: 1.比较大小select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较小值sign()函数根据某个值是0. ...

  3. Mysql-通过case..when实现oracle decode()函数进行多值多结果判断

    oracle的decode函数使用:http://www.cnblogs.com/hwaggLee/p/5335967.html case ..when 函数使用:http://www.cnblogs ...

  4. oracle decode函数用法

    DECODE函数是ORACLE PL/SQL是功能强大的函数之中的一个,眼下还仅仅有ORACLE公司的SQL提供了此函数,其它数据库厂商的SQL实现还没有此功能.DECODE有什么用途 呢? 先构造一 ...

  5. [Oracle] decode 函数及其用法

    http://blog.csdn.net/oscar999/article/details/18399177 前言 DECODE()函数,它将输入数值与函数中的参数列表相比较,根据输入值返回一个对应值 ...

  6. oracle decode函数 和 case when

    1.oracle decode分支函数 select decode(to_char(B.LQSJ, 'hh24:mi:ss'), '00:00:00', to_char(B.LQSJ, 'yyyy-m ...

  7. Oracle decode()函数应用

    在项目第一次遇到decode()函数,简单写一下用法. ')), ')), ')), ')), ')), ')), ')) from wg_jzmb jz, wg_jzfz fz where jz.s ...

  8. oracle decode函数使用方法

    1.decode(V1,1,A,2,B,C) 如果V1=1 那么显示A =2显示B 其他显示C ........ 2. 含义解释:  decode(条件,值1,返回值1,值2,返回值2,...值n,返 ...

  9. Oracle decode函数 除数为零

    decode (expression, search_1, result_1)如果 expression结果=search_1结果,则返回result_1,类似 if elsedecode (expr ...

随机推荐

  1. 解决在使用pip list时出现DEPRECATION

    在C:\Users\Administrator下建立pip文件夹,在pip下新建pip.ini:内容为: [list]format=columns

  2. poj 3461 (模式串T在主串S中出现的次数)

    求模式串在主串中出现的次数Sample Input 3BAPCBAPCAZAAZAZAZAVERDIAVERDXIVYERDIANSample Output 130 #include <iost ...

  3. POJ 2184 Cow Exhibition (带负值的01背包)

    题意:给你N(N<=100)只牛,每只牛有一个智慧值Si和一个活泼值Fi,现在要从中找出一些来,使得这些牛智慧值总和S与活泼值总和F之和最大,且F和S均为正.Si和Fi范围在-1000到1000 ...

  4. python:a += b 和 a = a + b

    在python中,不同的情况下,这两个表达式有着很大的区别: 如果a,b都是可变对象,例如list,a+=b实际是对a指向的地址上的值进行修改,即运算前后id(a)的值是不变的. 而a=a+b是不同的 ...

  5. Codeforces Round #392 (Div. 2)-D. Ability To Convert

    D - Ability To Convert 题目大意:给你一个数字 n 接下来再输入一个数字 w(<10^60),表示w这个数字是 n 进制的, 并且超过十进制也用数字表示,这样就有多种组合了 ...

  6. BZOJ3514 Codechef MARCH14 GERALD07加强版 LCT

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ3514 题意概括 N个点M条边的无向图,询问保留图中编号在[l,r]的边的时候图中的联通块个数. N ...

  7. 023 SpringMVC拦截器

    一:拦截器的HelloWorld 1.首先自定义拦截器 只要实现接口就行. package com.spring.it.interceptors; import javax.servlet.http. ...

  8. java构造代码块与静态代码块

    一:构造代码块 1.概述 作用:给对象初始化. 优先级:优先于对象的构造函数之前执行. { /*构造代码块的代码*/ } 给所有的对象统一的初始化,而构造函数只是给特定的对象初始化,因为构造函数可以重 ...

  9. 029.Docker Compose部署Zabbix实战

    一 前期规划 1.1 Zabbix架构图 1.2 其他规划 组件 类型 版本 备注 Zabbix Web zabbix-web-apache-mysql镜像 wordpress:latest 也可采用 ...

  10. .NET Core中使用Docker

    一.Docker简介 Docker是基于Linux容器技术(LXC),使用Go语言实现的开源项目,诞生于2013年,遵循Apache2.0协议.Docker自开源后,受到广泛的关注和讨论. Docke ...