oracle decode()函数的参数原来可以为sql语句!
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语句!的更多相关文章
- Oracle DECODE函数的语法介绍
Oracle DECODE函数功能很强,下面就为您详细介绍Oracle DECODE函数的用法,希望可以让您对Oracle DECODE函数有更多的了解. Oracle DECODE函数 Oracle ...
- Oracle DECODE函数的用法详解
Oracle DECODE函数使用方法: 1.比较大小select decode(sign(变量1-变量2),-1,变量1,变量2) from dual; --取较小值sign()函数根据某个值是0. ...
- Mysql-通过case..when实现oracle decode()函数进行多值多结果判断
oracle的decode函数使用:http://www.cnblogs.com/hwaggLee/p/5335967.html case ..when 函数使用:http://www.cnblogs ...
- oracle decode函数用法
DECODE函数是ORACLE PL/SQL是功能强大的函数之中的一个,眼下还仅仅有ORACLE公司的SQL提供了此函数,其它数据库厂商的SQL实现还没有此功能.DECODE有什么用途 呢? 先构造一 ...
- [Oracle] decode 函数及其用法
http://blog.csdn.net/oscar999/article/details/18399177 前言 DECODE()函数,它将输入数值与函数中的参数列表相比较,根据输入值返回一个对应值 ...
- 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 ...
- Oracle decode()函数应用
在项目第一次遇到decode()函数,简单写一下用法. ')), ')), ')), ')), ')), ')), ')) from wg_jzmb jz, wg_jzfz fz where jz.s ...
- oracle decode函数使用方法
1.decode(V1,1,A,2,B,C) 如果V1=1 那么显示A =2显示B 其他显示C ........ 2. 含义解释: decode(条件,值1,返回值1,值2,返回值2,...值n,返 ...
- Oracle decode函数 除数为零
decode (expression, search_1, result_1)如果 expression结果=search_1结果,则返回result_1,类似 if elsedecode (expr ...
随机推荐
- javafx基于使用fxml布局的tableview数据绑定用法
来个简单明了的 fxml的tableview数据绑定和java代码方式的数据绑定很像,不同的在于要有一到映射 首先看个目录 1.界面文件Sample.fxml <?xml version=&qu ...
- 【C++ Primer | 15】C++类内存分布
C++类内存分布 书上类继承相关章节到这里就结束了,这里不妨说下C++内存分布结构,我们来看看编译器是怎么处理类成员内存分布的,特别是在继承.虚函数存在的情况下. 下面可以定义一个类,像下面这样: c ...
- Android各国语言对照表(values-xxx)
eg: 阿拉伯 Arabic SA values-ar Android各国语言对照表https://blog.csdn.net/jiangguohu1/article/details/5044014 ...
- 单一职责原则(Simple responsibility pinciple, SRP)
一个类只负责一个功能领域中的相应职责 未完待续
- BZOJ1178 [Apio2009]CONVENTION会议中心 贪心 set
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1178 题意概括 一堆线段,现在取出最多条数,使其互不覆盖,并输出字典序最小的方案. 题解 这题好坑 ...
- Python - __name__ == '__main__'
if __name__ == '__main__': app.run() __name__系统变量指示模块应如何被加载,他的值为"__main__"时表示当前模块是被直接执行. _ ...
- lnmp thinkphp在linux上支持pathinfo
在lnmp环境中布置thinkphp 默认不支持pathinfo 的 在nginx.conf文件中的server中更改如下 #include enable-php.conf; #布置下面的支持pat ...
- hdu 5748 Bellovin【最长上升子序列】
题目链接:https://vjudge.net/contest/148584#problem/A 题目大意: 解题思路:题目要求为:输出与已知序列的每一个元素的f(i)(f(i)的定义如题)相同的字典 ...
- 你了解ECMAScript吗?
一.基本概念ECMA,European Computer Manufacturers Association,欧洲计算机制造协会. TC39,Technical Committee 39,ECMA的第 ...
- sass和less
一.相同点 sass和less具有变量.作用域.混合.嵌套.继承.运算符.颜色函数.导入和注释等基本特性,而且以“变量”.“混合”.“嵌套”.“继承”和“颜色函数”为五大基本特性. sass和less ...