解决方案 »

  1.   

    SELECT *FROM TABLE_CUST  WHERE datediff(year,cast(substring(@证件号码,7,4)+'-'+SUBSTRING(@证件号码,11,2)+'-'+SUBSTRING(@证件号码,13,2) as datetime),GETDATE()) >=18  AND LEN(证件号码)=18
      

  2.   

    改改:SELECT *FROM TABLE_CUST  WHERE datediff(year,cast(substring(证件号码,7,4)+'-'+SUBSTRING(证件号码,11,2)+'-'+SUBSTRING(证件号码,13,2) as datetime),GETDATE()) >=18  AND LEN(证件号码)=18
      

  3.   


    select *
    from
    (SELECT *
     FROM TABLE_CUST  
     WHERE LEN(证件号码)=18 and isdate(substring(证件号码,7,8))=1) t 
    where datediff(yy,cast(substring(证件号码,7,8) as datetime),getdate())>=18 
      

  4.   

    where 条件判断下证件号码的长度 然后时间函数datediff计算下年龄即可
      

  5.   

    用is_numberic先判断一下身份证号的前17位是否为纯数字