DECODE函数

  • Post author:
  • Post category:其他


decode函数很简单,相当于if….else….,只不过语法很简洁

decode()

  1. decode(条件,值1,值2,值3……)

当decode条件,值1满足时,就输出值1,值2满足时,就输出值2,。。。。以此类推,

  1. decode(字段值,值1,值2,值3……)

当字段值等于值1 ,则输出值2,否则输出值3

select 
T.LOT_ID,
T.LOT_RRN,
T.STARTED_TIMESTAMP,   ----开始加工时间
T.END_TIMESTAMP,
T.LOT_TYPE,
T.NEXT_STEP_ID_VERSION2,
T.EQPT_RRN,
T.CARRIER_LIST_RRN,
DECODE( T.LOT_STATUS,
'FINISH','结束加工',
'RUNNING','加工中',
'WAITING','等待加工',
T.LOT_STATUS) LOT_STATUS_RD
from  lot T
WHERE T.STARTED_TIMESTAMP>=TO_DATE('2022-09-01','YYYY-MM-DD')

输出结果为

语句意思为,当字段值显示  finish 输出 结束加工;waiting输出等待加工;running输出加工中,其余的还是原样输出

decode函数和其他函数结合



decode(sign(值1-值2),-1,变量1,变量2)

sign()函数:根据数值是0,正数,负数,分别返回0,1,-1

例如:

值1=10,值2=20


sign(值1-值2),返回-1,decode()返回变量1 ,达到取出最小值的目的


实例:查询某班男生女生数量


select count(*)  from 表 where 性别=男;


select count(*)  from 表 where 性别=女;用union合并一下结果


也可以使用


select decode(性别,男,1,0),decode(性别,女,1,0) from 表



版权声明:本文为w11abandon原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。