select * from tablename where (right(left(`IDCardNum`,14),8)>=19881123 and right(left(`IDCardNum`,14),8)<=20111229 and LENGTH(`IDCardNum`)=18) OR (RIGHT(LEFT(`IDCardNum`,12),6)>=19881123 and RIGHT(LEFT(`IDCardNum`,12),6)<=20111229 and LENGTH(`IDCardNum`)=15)
设 $Birthday 为传入的生日... where (LENGTH(`IDCardNum`)=15 and susbstring(IDCardNum, 6,6)=right('$Birthday',6)) or (LENGTH(`IDCardNum`)=18 and susbstring(IDCardNum, 6,8)='$Birthday')
select * from tablename where (right(left(`IDCardNum`,14),8)>=19881123 and right(left(`IDCardNum`,14),8)<=20111229 and LENGTH(`IDCardNum`)=18) OR (RIGHT(LEFT(`IDCardNum`,12),6)>=19881123 and RIGHT(LEFT(`IDCardNum`,12),6)<=20111229 and LENGTH(`IDCardNum`)=15)
如果是 varchar 则用 LENGTH()
如果是 char 则用 LENGTH(TRIM())
取字串 SUBSTRING用法与 php 的相应函数一样
(LENGTH(`IDCardNum`)=15 and susbstring(IDCardNum, 6,6)=right('$Birthday',6))
or
(LENGTH(`IDCardNum`)=18 and susbstring(IDCardNum, 6,8)='$Birthday')