思路:
    创建一个视图,从身份证号码中提取年月(用substr(身份证号字段,输出第一个字符串所在位置,输出个数))

解决方案 »

  1.   

    我想提取统计出来做成另外一张表.
    Oracle具体函数可以详细些不?
      

  2.   

    select decode( length(id) , 18 , to_date( substr( id , 7 , 8 ) , 'yyyymmdd' ) , 15 , to_date( substr( id , 7 , 6 ) , 'yymmdd' ) , null ) from yourtable
      

  3.   

    select decode( length(id) , 18 , to_date( substr( id , 7 , 8 ) , 'yyyymmdd' ) , 15 , to_date( substr( id , 7 , 6 ) , 'yymmdd' ) , null ) from yourtable这个是不是有问题好象不行?
      

  4.   

    DECODE(LEN
    ----------
    04-6月 -54
    02-5月 -87
    08-8月 -88这是按"林林"方法输出的结果的格式. 可以改成如"19540604"吗?
      

  5.   

    SELECT DECODE(LENGTH(身份证号),18,TO_CHAR(SYSDATE,'YYYY')-SUBSTR(身份证号,7,4),
                                    15,TO_CHAR(SYSDATE,'YYYY')-
           DECODE(GREATEST(SUBSTR(身份证号,7,2) ,TO_CHAR(SYSDATE,'YY')),SUBSTR(身份证号,7,2),CONCAT('19',SUBSTR(身份证号,7,2)),TO_CHAR(SYSDATE,'YY'),CONCAT('20',SUBSTR(身份证号,7,2)))) "AGE" FROM DUAL;测试:SELECT DECODE(LENGTH('400412790204125'),18,TO_CHAR(SYSDATE,'YYYY')-SUBSTR('400412790204125',7,4),
                                    15,TO_CHAR(SYSDATE,'YYYY')-
           DECODE(GREATEST(SUBSTR('400412790204125',7,2) ,TO_CHAR(SYSDATE,'YY')),SUBSTR('400412790204125',7,2),CONCAT('19',SUBSTR('400412790204125',7,2)),TO_CHAR(SYSDATE,'YY'),CONCAT('20',SUBSTR('400412790204125',7,2)))) "AGE" FROM DUAL;
           AGE
    ----------
            25SELECT DECODE(LENGTH('40041219780204125x'),18,TO_CHAR(SYSDATE,'YYYY')-SUBSTR('40041219780204125x',7,4),
                                       15,TO_CHAR(SYSDATE,'YYYY')-
           DECODE(GREATEST(SUBSTR('40041219780204125x',7,2) ,TO_CHAR(SYSDATE,'YY')),SUBSTR('40041219780204125x',7,2),CONCAT('19',SUBSTR('40041219780204125x',7,2)),TO_CHAR(SYSDATE,'YY'),CONCAT('20',SUBSTR('40041219780204125x',7,2)))) "AGE" FROM DUAL;
           AGE
    ----------
            26