oracle 关于 case when
问题描述:
oracle 关于 case when
order by case when paiming is null then 99 else paiming end asc 这句话有什么问题 else 等于自己这样写是不是有问题 改怎么写
答
只有paiming 是数字类型的,这个语句是没有问题的.
你这么写有什么错误了吗?
或者直接:
order by nvl(paiming,99)paiming是nvarchar2 类型 所以报这个错误ORA-00932: 数据类型不一致: 应为 NUMBER, 但却获得 NCHAR
请问应该怎么改 ?
如果paiming是字符类型,但是存储的是数字,那么就强制转换一下数字:
order by case when paiming is null then 99 else to_number(paiming) end asc
如果存储的有字符,那么就用字符排序就得了:
order by case when paiming is null then '99' else paiming end asc