Select NVL2(t.a, t.b, ‘-’)from  table  t
数据库提示数值无效,这是问什么?
我想显示的结果是
当a为空时,显示     -
不为空时,显示      b的值

解决方案 »

  1.   

    select nvl2(a, b, '-')
    from t;
      

  2.   

    提示:ORA-01722:数值无效;
    但这样写:select nvl2(a, '-', b)
    from t;却没有问题,这是为什么?
      

  3.   

    b字段是Number类型的,
    a是vachar2类型的,
    select nvl2(a, to_char(b), '-')
    from t;
    这样就可以了,能告诉原因吗?
      

  4.   

    NVL2 (expr1, expr2, expr3) ->expr1不为NULL,返回expr2;为NULL,返回expr3。expr2和expr3类型不同的话,expr3会转换为expr2的类型
      

  5.   

    ls 正解 select nvl2(a, to_char(b), '-') expr2 和expr3 类型一样
    而select nvl2(a, b, '-') expr2 和expr3 类型不一样