标签:语句 ESS to_char play 使用 art 电子 time 图片
判断某个字段的值,如果以APP开头,需查询APP表里对应的数据;如果是以JG开头,就查询机构对应的表。
如果使用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
这样,查询结果会将对应的数字字符串替换文字。
错误用法:直接跟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()函数是判断某个字符串内是否包含指定字符串,在这里不影响判断。

oracle decode()函数的参数原来可以为sql语句!
标签:语句 ESS to_char play 使用 art 电子 time 图片
原文地址:https://www.cnblogs.com/Marydon20170307/p/10579845.html