mysql 检查一个字符串是不是身份证号
CREATE DEFINER=`root`@`%` FUNCTION `f_base_check_id_number`(number VARCHAR(20)CHARSET utf8) RETURNS tinyint(1) BEGIN DECLARE flag BOOL DEFAULT FALSE; IF (LENGTH(number)=18 AND number REGEXP CONCAT('^(([1][1-5])|([2][1-3])|([3][1-7])|([4][1-6])|([1][0-4])|([6][1-6])|([7][1])|([8][1-2]))', -- 1、2位 '(([0][0-9])|([1][0-9])|([2][0-9])|([3][0-9])|([4][0-3])|([5][1-3])|([8][2])|([9][0]|[1]|[9]))', -- 3、4位 '(([0-3][0-9])|([4][0-4])|([5][1])|([8][1-9])|([9][0-9]))', -- 5、6位 '(([1]([8]|[9])[0-9])|([2]([0]|[0-1])[0-9]))[0-9](0[1-9]|1[0-2])(0[1-9]|1[0-9]|2[0-9]|3[0-1])[0-9]{3}([0-9]|X)') -- 后12位 OR (LENGTH(number)=15 AND number REGEXP CONCAT('^(([1][1-5])|([2][1-3])|([3][1-7])|([4][1-6])|([1][0-4])|([6][1-6])|([7][1])|([8][1-2]))', '(([0][0-9])|([1][0-9])|([2][0-9])|([3][0-9])|([4][0-3])|([5][1-3])|([8][2])|([9][0]|[1]|[9]))', '(([0-3][0-9])|([4][0-4])|([5][1])|([8][1-9])|([9][0-9]))', '(0[1-9]|[1-9][0-9])(0[1-9]|1[0-2])(0[1-9]|1[0-9]|2[0-9]|3[0-1])[0-9]{3}'))) THEN SET flag = TRUE; END IF; RETURN flag; END