此脚本将从以下字符串中获取序列,年,月和日...... 然后从序列部分找到缺失的数字(如1111,1112,115,..等) 问题在于输出这个脚本不正确不DBMS丢失号码缺少数字脚本不会工作?
EMP-1111_14_01_01_2141_G1
EMP-1112_14_01_01_1612_G1
EMP-1115_14_01_01_1109_G1
EMP-1116_14_01_01_1315_G1
EMP-1118_14_01_01_0910_G2
EMP-1121_14_01_01_1105_G1
EMP-1111_14_01_01_1120_G2
输出结果应该是这样的
缺少数1113
缺少数1114
缺少数1117
缺少数1118
缺少数1119
缺少数1120
declare
v_name table1.ENAME%TYPE;
V_seq NUMBER (4);
V_Year number(2);
V_Month number (2);
V_day number (2);
max_seq number(4);
min_seq number(4);
CURSOR List_ENAME_cur IS
SELECT ENAME from table1
WHERE status = 2;
begin
FOR List_ENAME_rec IN List_ENAME_cur loop
if REGEXP_LIKE(List_ENAME_cur.ENAME,'emp[-][1-9]{4}[_][1-9]{2}[_][1-9]{2}[_][1-9]{2}[_][0-9]{4}[_][G]["1"]') then
V_seq := substr(List_ENAME_cur.ename,5,4);
V_Year := substr(List_ENAME_cur.ename,10,2);
V_Month := substr(List_ENAME_cur.ename,13,2);
V_day := substr(List_ENAME_cur.ename,16,2);
if min_seq is null or V_seq_FILENAME < min_seq then
min_seq := V_seq_FILENAME;
DBMS_OUTPUT.PUT_LINE('Missing number '||min_seq);
end if;
if max_seq is null or V_seq_FILENAME > max_seq then
max_seq := V_seq_FILENAME;
DBMS_OUTPUT.PUT_LINE('Missing number '||max_seq);
end if;
end if;
end loop;
DBMS_OUTPUT.PUT_LINE('max_seq '||max_seq||' min_seq '||min_seq);
end;
对于这个数据集,应该是什么样的预期结果? – SriniV
结果应该是丢失号码1113,1114,1117,1118,1119,1120 – user334560415
如果条件应该输出数值,如果循环是numm我是不是? – user334560415