数字数据类型的Oracle等效NVL是什么?
这是有效的,因为数据类型是VARCHAR:
select nvl(enrol.OUAC_APPLNO, 'blank') Invalid_OUAC_APPLNO
但由于数据类型为NUMBER:
,因此无法正常工作select nvl(enrol.ouac_type_id, 'blank') REGTYP
答案 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