问个查询,student表中有两个字段出生日期(birth)和身份证号(student_id),要查birth与student_id中出生日期不一样的所有数据,birth数据是19831126这个样子的数据,但是身份证号有的是15位有的是18位的应该怎么样写这个查询语句,谢谢了
我是用substring把身份证中出生年月这块得到,然后在和birth进行比较,但是有的student_id是15,有的是18位,在substring中劫取的位数不一样,这块应该怎么样判断,帮忙给出具体语句谢谢了

解决方案 »

  1.   

    case len(student_id) 
         when 15 then '19'+substring(student_id,7,6) 
         when 18 then  substring(student_id,7,8)
    end
      

  2.   

    libin_ftsafe(子陌红尘:TS for Banking Card)
    在问你一个问题,最后写完的查询是这个样子,但是birth或student_id中的数据有可能是null我还想把有NULL的也查出来,在下面的语句上应该怎么写
    select * from student where class_no='0307101'  and
         birth<>case len(student_id) 
         when 15 then '19'+substring(student_id,7,6) 
         when 18 then  substring(student_id,7,8)
    end
      

  3.   

    select * from student where len(replace(student_id,birth,''))=len(student_id)