This is my first time that I’ve got in group online courses. Despite the fact that I got such a high score, I still feel I don’t deserve it. I know I didn’t do a great job in this lesson, because you know, what I’ve said was really easy to understand. My gosh, I just couldn’t believe why the teacher gave me such a really high score, my god, my god, I really appreciate it. [允悲] https://t.cn/RJyzo9n
【ORACLE筛选字符串是否含有某些以逗号分隔字符】
CREATE OR REPLACE TYPE type_split AS TABLE OF varchar2(500);
—————————————————————————
CREATE OR REPLACE FUNCTION str_split(in_str VARCHAR2,in_sep VARCHAR2)
RETURN type_split
IS
--分割字符串位置索引
v_sep_pos PLS_INTEGER;
--存储分割后的字符串数组
v_str_array type_split:=type_split();
--substr起始索引
v_start_idx PLS_INTEGER:=1;
BEGIN
v_sep_pos:=instr(in_str,in_sep);
WHILE(v_sep_pos>0)
LOOP
v_str_array.extend;
v_str_array(v_str_array.last):=substr(in_str,v_start_idx,v_sep_pos-v_start_idx);
v_start_idx:=v_sep_pos+1;
v_sep_pos:=instr(in_str,in_sep,v_start_idx);
END LOOP;
v_str_array.extend;
v_str_array(v_str_array.last):=substr(in_str,v_start_idx,length(in_str)-v_start_idx+1);
FOR i in v_str_array.first..v_str_array.last
LOOP
dbms_output.put_line(v_str_array(i));
END LOOP;
RETURN v_str_array;
END str_split;
——————————————————————————
create or replace function checks(v_a varchar2, v_b varchar) return number as
v_str_array type_split;
numnumber;
counumber;
begin
DBMS_OUTPUT.ENABLE(buffer_size => null);
num:= -1;
cou:= 0;
v_str_array := str_split(v_b, ',');
FOR i in 1 .. length(v_b) - length(replace(v_b, ',', '')) + 1 loop
if instr(v_a, v_str_array(i)) > 0 then
cou := cou + 1;
end if;
end loop;
if cou > 0 and cou <= v_str_array.last then
return cou;
end if;
dbms_output.put_line(cou || ' ' || v_str_array.last);
return num;
end;
——————————————————————————
select case
when checks(a, '失职,违标') > 0 then
'失职,违标'
when checks(a, '违标') > 0 then
'违标'
when checks(a, '违标') > 0 then
'违标'
end
from (select '作业违标、管理失职范围及考核办法' a from dual)
CREATE OR REPLACE TYPE type_split AS TABLE OF varchar2(500);
—————————————————————————
CREATE OR REPLACE FUNCTION str_split(in_str VARCHAR2,in_sep VARCHAR2)
RETURN type_split
IS
--分割字符串位置索引
v_sep_pos PLS_INTEGER;
--存储分割后的字符串数组
v_str_array type_split:=type_split();
--substr起始索引
v_start_idx PLS_INTEGER:=1;
BEGIN
v_sep_pos:=instr(in_str,in_sep);
WHILE(v_sep_pos>0)
LOOP
v_str_array.extend;
v_str_array(v_str_array.last):=substr(in_str,v_start_idx,v_sep_pos-v_start_idx);
v_start_idx:=v_sep_pos+1;
v_sep_pos:=instr(in_str,in_sep,v_start_idx);
END LOOP;
v_str_array.extend;
v_str_array(v_str_array.last):=substr(in_str,v_start_idx,length(in_str)-v_start_idx+1);
FOR i in v_str_array.first..v_str_array.last
LOOP
dbms_output.put_line(v_str_array(i));
END LOOP;
RETURN v_str_array;
END str_split;
——————————————————————————
create or replace function checks(v_a varchar2, v_b varchar) return number as
v_str_array type_split;
numnumber;
counumber;
begin
DBMS_OUTPUT.ENABLE(buffer_size => null);
num:= -1;
cou:= 0;
v_str_array := str_split(v_b, ',');
FOR i in 1 .. length(v_b) - length(replace(v_b, ',', '')) + 1 loop
if instr(v_a, v_str_array(i)) > 0 then
cou := cou + 1;
end if;
end loop;
if cou > 0 and cou <= v_str_array.last then
return cou;
end if;
dbms_output.put_line(cou || ' ' || v_str_array.last);
return num;
end;
——————————————————————————
select case
when checks(a, '失职,违标') > 0 then
'失职,违标'
when checks(a, '违标') > 0 then
'违标'
when checks(a, '违标') > 0 then
'违标'
end
from (select '作业违标、管理失职范围及考核办法' a from dual)
"在我年轻、少不更事的时候,父亲给过我一个忠告,至今仍萦绕在心头。
‘批评别人之前,要记得’,他对我说,‘不是所有人都像你,从小就那么好命。"
About three or four years ago,i've heard about this sentence,simultaneously,i am already would to read the bookThe Great Gatsby
But i could not understand the story~ https://t.cn/Rv9mCiJ
‘批评别人之前,要记得’,他对我说,‘不是所有人都像你,从小就那么好命。"
About three or four years ago,i've heard about this sentence,simultaneously,i am already would to read the bookThe Great Gatsby
But i could not understand the story~ https://t.cn/Rv9mCiJ
✋热门推荐