有一个日期格式的字段,如果为空就让他显示未填,不为空就把这个日期显示出来select name,sex,
(CASE when birthday= '' THEN '未填' when a.AMArrive != '' THEN birthday end)as birthday
from user这条语句是错的,应该怎样写呢

解决方案 »

  1.   

    select name,sex,
    nvl(birthday,'未填') birthday
    from user
      

  2.   

    birthday是日期型的,你这样写是会出错的
      

  3.   

    select name,sex,
    nvl(to_char(birthday),'未填') birthday
    from user
      

  4.   

    select name,sex,
    (CASE when birthday is null THEN '未填' else THEN birthday end)as birthday
    from user判断是否为空要用 is null
      

  5.   

    nvl适用在那些类型?
    -----
    都适用,开始报错是因为birthday和'未填'类型不一致
      

  6.   

    zzwind5() 
    select name,sex,
    (CASE when birthday is null THEN '未填' else THEN birthday end)as birthday
    from user
    报缺少表达式的错
      

  7.   

    select name,sex,
    (CASE when birthday is null THEN '未填' else  birthday end)as birthday
    from user
      

  8.   

    select name,sex,
    (CASE when birthday is null THEN '未填' else  birthday end)as birthday
    from user报数据类型不一致的错
      

  9.   

    select name,sex,
    (CASE when birthday is null THEN '未填' else to_char(birthday, 'yyyy-mm-dd') end)as birthday
    from user
      

  10.   

    zzwind5() 也就是说返回的数据类型要都一致是吗
      

  11.   

    数据类型不一致应该是程序里报的错误吧,那样才是对的了,你把日期类型的数据搞了个字符串呀‘未填’可不是datetime的,应该放在程序里判断比较合理吧,要不就把程序改成String类型的