select months_between(SYSDATE,TO_DATE('19880811','yyyy-mm-dd'))/12 mon_between
from aa
这样能看出是25岁大概
当我把19880811这个固定的内容变成数据库中值的时候
当身份证是15位的时候前面补全19在截取,当18位的时候就截取值
select months_between(SYSDATE,TO_DATE(CASE
WHEN LENGTH(SFZH) = 15 THEN
'19' || SUBSTR(SFZH, 7, 6)
ELSE
SUBSTR(SFZH, 7, 8)
END,'yyyy-mm-dd'))/12
from aa
查出结果不对为什么啊?数据库中值也是19880811
select months_between(SYSDATE,TO_DATE(
SUBSTR(SFZH, 7, 8)
,'yyyy-mm-dd'))/12
from aa
这样写也对了。是不是case when 的时候有影响啊?
------解决方案--------------------
declare m_int int ;
begin
select count(*) into m_int from mytable where ..... ;
for i in 1..m_int loop
-- to do ......
end loop ;
end ;