表 A 中有如下数据:
             字段      IDCard:
                 341204198712292218
                 341204198612292219
                 341204850101217
                 341204851229216
                 341204841229216  等等,身份证号码有15和18位两种。假如找出:1985-10-01之后的号码 结果应该有:341204198712292218,341204198612292219,341204851229216这三个请问SQL语句怎么写

解决方案 »

  1.   

    SELECT * FROM TB WHERE 
    CASE WHEN LEN(IDCard)=18 THEN SUBSTRING(IDCard,7,8) 
    ELSE '19'+SUBSTRING(IDCard,7,6) END >'1985-10-01'
      

  2.   

    SELECT * FROM TB
     WHERE datediff(day,CASE WHEN LEN(IDCard)=18 THEN cast(SUBSTRING(IDCard,7,8) as datetime) ELSE cast('19'+SUBSTRING(IDCard,7,6) as datetime) END ,'1985-10-01')<0