SELECT
IFNULL(fm.`resName`, "") AS 'name',
IFNULL(fm.`sfcode`, "") AS 'sfcode',
IFNULL(fm.`birthday`, "") AS 'birthday',
CASE
IF
(
length( fm.`sfcode` )= 18,
cast( substring( fm.`sfcode`, 17, 1 ) AS UNSIGNED )% 2,
IF
( length( fm.`sfcode` )= 15, cast( substring( fm.`sfcode`, 15, 1 ) AS UNSIGNED )% 2, 3 ))
WHEN 1
THEN '男'
WHEN 0
THEN '女'
ELSE '未知'
END AS 'sex',
CAST(
IF(
IFNULL(fm.`sfcode`, '') = '',
IF(
IFNULL(fm.`birthday`, '') = '',
'',
TIMESTAMPDIFF(YEAR, fm.`birthday`, CURDATE())
),
IF(
LENGTH(fm.`sfcode`) = 18,
TIMESTAMPDIFF( YEAR, SUBSTRING(fm.`sfcode`, 7, 8), CURDATE() ),
IF(
LENGTH(fm.`sfcode`) = 15,
TIMESTAMPDIFF( YEAR, CONCAT('19', SUBSTRING(fm.`sfcode`, 7, 6)), CURDATE()
),
''
)
)
) AS CHAR
) AS 'age'
FROM
resident fm
WHERE fm.`mobile` = '157****3163'