求助大家一个批量查询身份证和出生日期SQL
程序由于容错处理,在数据库里有很多身份证的错误数据(还有些有字符,长度不正确).现在要批量查询这些数据出来.
条件是身份证长度为15位或是18位,不允许有字符
以下是我写的,但是不能通过,因为原来的数据库里有字符的情况,请大侠指教
select b.GRBM,b.GRBZDM,b.HKXZ,b.XM,b.XB,b.SFZHM,b.CSRQ,b.YHLB,b.mz,b.jg,b.whcd,b.shr,b.shsj
from jbxx_ryxx b
where (length(b.SFZHM)<>15 and length(b.SFZHM)<>18)
or (length(b.SFZHM)=15 and (
(Substr(b.SFZHM,9,2)>12)
or (Substr(b.SFZHM,11,2) > 31)
or (Substr(b.SFZHM,9,2) in (01,03,05,07,08,10,12) and Substr(b.SFZHM,11,2)>31)
or (Substr(b.SFZHM,9,2) in (04,06,09,11) and Substr(b.SFZHM,11,2)>30)
or (Substr(b.SFZHM,9,2)=02 and Substr(b.SFZHM,11,2)>29)))