各位大虾,请教下面第一句正确,第二句为什么会报无效数字的错误呢?现行谢过!SELECT --正确
decode(sign(length(T.VALUE_DATE)-8),0,to_char(to_date(T.VALUE_DATE,'YYYYMMDD'),'DD/MM/YYYY'),1,to_char(to_date(T.VALUE_DATE,'YYYYMMDD'),'DD/MM/YYYY'),T.VALUE_DATE) VALUE_DATE
FROM TSELECT --报错:无效数字
decode(sign(length(T.VALUE_DATE)-8),-1,T.VALUE_DATE,to_char(to_date(T.VALUE_DATE,'YYYYMMDD'),'DD/MM/YYYY')) VALUE_DATE
FROM T
decode(sign(length(T.VALUE_DATE)-8),0,to_char(to_date(T.VALUE_DATE,'YYYYMMDD'),'DD/MM/YYYY'),1,to_char(to_date(T.VALUE_DATE,'YYYYMMDD'),'DD/MM/YYYY'),T.VALUE_DATE) VALUE_DATE
FROM TSELECT --报错:无效数字
decode(sign(length(T.VALUE_DATE)-8),-1,T.VALUE_DATE,to_char(to_date(T.VALUE_DATE,'YYYYMMDD'),'DD/MM/YYYY')) VALUE_DATE
FROM T
解决方案 »
- 请教一个很难的问题
- 10G可否停掉DBMS_STATS.GATHER_DATABASE_STATS_JOB_PROC???
- 求一条SQL Sever 转换为Oracle
- oracle登陆时的问题,请教高手!
- 将这句sqlserver语句转成oracle语句,谢谢
- 备份、恢复oracle8数据库中的一个表(能不能用一句话就能实现)
- 请解释
- 如何设置自动转换字符集?
- 再问一次:如何动态创建(事实上是复制)一个ORACLE上的数据库用户?
- 两个字节的byte型数据在oracle中应该存成什么类型?
- 求解:select查询列为null不显示的过程转为函数
- oracle 物化视图 ,提示 表或视图不存在
这里T.VALUE_DATE后面是不是少了个数字?
DECODE(value, if1, then1, if2,then2, if3,then3, . . . else )
这两句只是位置调换了。
对不起,看错了
decode返回什么类型是根据then部分来决定的,所以最后的to_char()部分会转换为number类型,
就出错了,
如果改成下面就应该没有问题SELECT
decode(sign(length(T.VALUE_DATE)-8),-1,T.VALUE_DATE,to_char(to_date(T.VALUE_DATE,'YYYYMMDD'),'DDMMYYYY')) VALUE_DATE
FROM T
--或者
SELECT decode(sign(length(T.VALUE_DATE)-8),-1,to_char(T.VALUE_DATE),to_char(to_date(T.VALUE_DATE,'YYYYMMDD'),'DD/MM/YYYY')) VALUE_DATE
FROM T