本帖最后由 a307487821 于 2011-08-04 12:46:57 编辑

解决方案 »

  1.   

    -- 你想怎么比较?-- 年不用管,只比较月、日,对吧?
    -- 方法有二:-- 其一:两个数据量,分别用四个变量(月:两个变量;日:两个变量)
    --   即:A数据的月、日,分别用 A_month, A_day;
             B数据的月、日,分别用 B_month, B_day;
    -- if (A_month < B_month or (A_month = B_month and A_day < B_day ) )then A < B
       else if A_month = B_month and A_day = B_day then A = B
       else A > B-- 其二:直接获取日期变量的月、日 相比较:
    select to_char(A, 'mmdd'), to_char(B,'mmdd') into v_A, v_B from ......if v_A < v_B ...
    elsif v_A = v_B ...
    else ...-- 当然是用方法二简单啦!   直接比较!
      

  2.   

    关键 是  你的 这种方法 是 字符串的比较  字符串比较的 是ascii  0611 0601  的ascii是一样的
      

  3.   

    SQL> select (CASE WHEN '0611'>'0601' THEN 1 ELSE 0 END) AS false_true FROM dual;FALSE_TRUE
    ----------
             1SQL> select (CASE WHEN '0601'>'0611' THEN 1 ELSE 0 END) AS false_true FROM dual;FALSE_TRUE
    ----------
             0-- ascii 0611 0601 的ascii是一样的
    -- 比较两个字符串的ASCII码,并不是将两个字符串的所有字符去比较,而只是比较这两个字符串中的首字符!
      

  4.   

    SQL> select ascii('0601') from dual;ASCII('0601')
    -------------
               48SQL> select ascii('06操你妈逼') from dual;ASCII('06操你妈逼')
    -------------------
                     48