Oracle数字数据类型的等效NVL

时间:2014-09-18 13:28:20

标签: sql oracle

数字数据类型的Oracle等效NVL是什么?

这是有效的,因为数据类型是VARCHAR:

    select nvl(enrol.OUAC_APPLNO, 'blank') Invalid_OUAC_APPLNO

但由于数据类型为NUMBER:

,因此无法正常工作
    select nvl(enrol.ouac_type_id, 'blank') REGTYP

3 个答案:

答案 0 :(得分:5)

没有等效的,没有Oracle函数会接受这个(apart from DECODE() but don't do that);你将不得不将你的号码转换成一个角色:

select nvl(cast(enrol.OUAC_APPLNO as varchar2(10)), 'blank') 

您可能需要根据需要更改要转换的字符数。

然而,我不知道你为什么要这样做。根据定义,NULL意味着不存在。如果您想显示blank以便赋予不存在,那么您应该使用表示层而不是数据库。

答案 1 :(得分:2)

它不会工作,因为oracle希望每一行都应该在同一类型中,否则你无法在该列上运行函数,你已经将ouac_type_id转换为varchar,如下所示;

select nvl(cast(enrol.OUAC_APPLNO as varchar2(10)), 'blank') REGTYP

答案 2 :(得分:0)

选择nvl(TO_CHAR(enrol.OUAC_APPLNO),“空白”)REGTYP