ps:本文是用出生日期,如果是取身份证号的,只需该
select
id,
name,
case
when id < "2" then "1匹配上"
end as res
from tab;
隐士转换 int类型id在计算时比较"2" string类型的"2"转换成int类型的2
select
id,
name,
case
when id = 2 then "1匹配上"
else
"1没匹配上"
end as res
from tab;
create table tab2 as
select
tmp.id,
tmp.name,
tmp.birthday,
tmp.age1,
case
when tmp.age1 >= 0 and tmp.age1 < 10 then "少年"
when tmp.age1 >= 10 and tmp.age1 <20 then "青少年"
when tmp.age1 >= 20 and tmp.age1 <30 then "青年"
else "中年"
end as nld,
tmp.age2
from
(select
id,
name,
birthday,
cast(if(datediff(CURRENT_DATE,CONCAT(substr(CURRENT_DATE,0,4),substr(birthday,5,7)))>=0,
(substr(CURRENT_DATE,0,4) - substr(birthday,0,4)),
(substr(CURRENT_DATE,0,4) - substr(birthday,0,4)-1)) as int) as age1,
cast(if(datediff(CURRENT_DATE,CONCAT(substr(CURRENT_DATE,0,4),substr('2015-03-04',5,7)))>=0,
(substr(CURRENT_DATE,0,4) - substr('2015-03-04',0,4)),
(substr(CURRENT_DATE,0,4) - substr('2015-03-04',0,4)-1)) as int) as age2
from tab) tmp;
切割年
select
id,
name,
birthday,
substr(birthday,6,5)
from tab;