-- 报 ora-01847错误
select nvl(a.date1,'-') as date1 from
(
select to_date('2011-01-01','YYYY-MM-DD') as date1 from dual
) a
;
-- 报ora-00932错误
select (case when a.date1 is not null then a.date1 else '-' end ) as date1
from
(
select to_date('2011-01-01','YYYY-MM-DD') as date1 from dual
) a
我问过我公司的DBA,他说这样是不行的,oracle 的机制 不允许,有什么方法不?
select nvl(a.date1,'-') as date1 from
(
select to_date('2011-01-01','YYYY-MM-DD') as date1 from dual
) a
;
-- 报ora-00932错误
select (case when a.date1 is not null then a.date1 else '-' end ) as date1
from
(
select to_date('2011-01-01','YYYY-MM-DD') as date1 from dual
) a
我问过我公司的DBA,他说这样是不行的,oracle 的机制 不允许,有什么方法不?
解决方案 »
- 从oracle10g 32bit(RED Hat)为客户端,导出oracle11g 64bit(HP UNIX)库里的信息,报错如下
- 各位老大 我用sqlldr导数据的时候报 ‘多字节字符错误’ 请帮忙看看原因!
- 为何standard包不能访问???在线等!!!
- oracle clob类型存入的文章内容, 如何查询内容呢?另用什么字段类型存文章内容?
- 创建库时报ORA-01092: ORACLE instance terminated. Disconnection forced 错误,小女子用我所有的分求答案,请个位多帮忙.
- oracle插入最大值的问题
- 求助:改了字符集,难道就真的没办法再exp吗?
- oracle里快照删不掉,点了删除很久都没反应?
- oracle数据库的更新问题
- 触发器 Create Tabel Or User
- 问1个SQL语句。多谢!
- oracle导入大量数据问题
--這樣寫
select decode(a.date1,null,'-',to_char(a.date1,'yyyy-mm-dd hh24:mi:ss')) as date1 from
(
select to_date('2011-01-01','YYYY-MM-DD') as date1 from dual
) a;
方法是好,可是sql server 系列的不能用 decode
而在 sql server 里面 isnull( nvl) 是不会要求 前面的字段和后面的字段类型一样,这是oracle 内置的函数,这没话说,
可以用 case when 处理,还会有数据类型不一致的错误,这很难理解,
看来目前只能分别为
oracle 和 sql server 分别写
select @date=null;
select case when @date is null then '-' else convert(varchar(10),@date,112) end;
select @date=getdate();
select case when @date is null then '-' else convert(varchar(10),@date,112) end;
可是连用 case when 都是这种情况,
sql server
可以用
( case when date1 is not null then date1 else '-' end ) as dateNew1
但是oracle
在用这个 case when 会报类型不一致的错误,就不能理解了,
我写sql 一般想办法避开版本差异的问题,
可是连case when 在 sql server 下行,oracle 下不行,颠覆我平时的观念,我不知道是不是哪天其他一些平时习以为常的语句,也会有出现类似的问题。
as date1 from
(
select to_date('2011-01-01','YYYY-MM-DD') as date1 from dual
) a nvl 两个参数数据类型必须一致吧