oracle里nvl,to_char,decode这些函数怎么用啊?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle里nvl,to_char,decode这些函数怎么用啊?相关的知识,希望对你有一定的参考价值。

  Oracle提供了一些逻辑判断函数,这些函数可以在查询中使用。

1. nvl :针对空值进行测试

    函数原型为:NVL(testValue,SubstituteValue)

    常见的用法是  Select max(score) From SC Where Name=‘Jerry’

    有时max(score)为空,也就是说Jerry并没有考试记录,这时我们用"No Record"标注一下:

    Select NVL(max(score),"No Record") From SC;

 

    还有一个NVL2函数跟其相似,函数原型为: NVL(testValue,SubValue1,SubValue2)

NVL2函数实现的是若testValue为NULL,返回SubValue1,否则返回SubValue2。


2.Decode函数

  Decode函数的原型为: Decode(testValue, if1, then1, if2,then2.....else).

   针对testValue进行测试,若testValue等于if1则返回then1,若testValue等于if2则返回then2,....若都没有返回,刚返回else. 示例如下:

若我们用Decode可以这样实现:

SELECT class, course,
       DECODE (student,
               \'A\', \'Anco\',
               \'B\', \'Bily\',
               \'C\', \'Candy\',
               \'D\', \'Davi\',
               \'E\', \'Eve\',
               \'F\', \'Fion\'
              ) AS en_name
  FROM studentinfo


3. to_char函数功能,就是将数值型或者日期型转化为字符型,转换过程中可以进行格式化处理,函数原型较多,示例如下:

   



参考技术A 我用一个sql语句来描述吧, select nvl(name,'无名'), to_char(time,'yyyy,mm,dd,hh,mi,ss') as 日期,decode(fettle,1,'正常',2,'禁用') from mytable;

oracle 当做一个函数的时候提示没有足够的值

create or replace function get_sjbb(tyears varchar2,tnonth varchar2)
return varchar2
as
v_sql1 varchar2(4000); -- 返回字符串,你这里符合条件的是SQL语句
begin
SELECT
COUNT(DECODE(TO_CHAR(RECIEVE_DATE, 'DD'), '01', 0)) as "1",
COUNT(DECODE(TO_CHAR(RECIEVE_DATE, 'DD'), '02', 0)) as "2" into v_sql1
FROM V_SJBB
where TO_CHAR(RECIEVE_DATE,'YYYY') = tyears
AND TO_CHAR(RECIEVE_DATE,'MM') = tnonth;
return v_sql1;
end;

参考技术A UPLOAD.OrderBy(x => x.SER_NO).Where((x, index) => index <= 1).Select((x, index) => new x, index ).OrderByDescending(x => x.index);

以上是关于oracle里nvl,to_char,decode这些函数怎么用啊?的主要内容,如果未能解决你的问题,请参考以下文章

oracle 当做一个函数的时候提示没有足够的值

为啥 Oracle 的 DECODE 给我的价值与 NVL 不同?

简单接触oracle数据库nvl函数decode函数

ORACLE的一些问题

oracle to_char 语法

nvl 与 nvl2