Oracle数据库自定义函数练习20181031

--测试函数3
CREATE OR REPLACE FUNCTION FN_TEST3
(NUM IN VARCHAR2)
RETURN VARCHAR2 IS
TYPE VARCHAR2_ARR IS TABLE OF VARCHAR2(300);
NUMARR VARCHAR2_ARR;
TEMPNUM VARCHAR2(1000) := '';
TEMPCOUNT NUMBER := 0;
BEGIN
  SELECT TRIM(REGEXP_SUBSTR(NUM,'(w|[-])+',1,LEVEL))
  BULK COLLECT INTO NUMARR FROM 
  DUAL
  CONNECT BY LEVEL <= REGEXP_COUNT(NUM,'(w|[-])+');
  FOR I IN 1 .. NUMARR.COUNT
  LOOP 
    IF NUMARR(I) IS NOT NULL THEN
      TEMPNUM := TEMPNUM || NUMARR(I);
    END IF;
  END LOOP;
  RETURN TEMPNUM;
END;
/

--测试函数2
CREATE OR REPLACE FUNCTION FN_TEST2
(NUM IN VARCHAR2)
RETURN NUMBER IS
TYPE VARCHAR2_ARR IS TABLE OF VARCHAR2(300);
NUMARR VARCHAR2_ARR;
TEMPNUM VARCHAR2(1000) := '';
TEMPCOUNT NUMBER := 0;
BEGIN
  SELECT TRIM(REGEXP_SUBSTR(NUM,'(w|[-])+',1,LEVEL))
  BULK COLLECT INTO NUMARR FROM 
  DUAL
  CONNECT BY LEVEL <= REGEXP_COUNT(NUM,'(w|[-])+');
  FOR I IN 1 .. NUMARR.COUNT
  LOOP 
    IF NUMARR(I) IS NOT NULL THEN
      TEMPNUM := TEMPNUM || NUMARR(I) || ',';
      TEMPCOUNT := TEMPCOUNT + 1;
    END IF;
  END LOOP;
  RETURN TEMPCOUNT;
END;
/

--测试函数
CREATE OR REPLACE FUNCTION FN_TEST
(NUM IN VARCHAR2)
RETURN VARCHAR2 IS
TYPE VARCHAR2_ARR IS TABLE OF VARCHAR2(300);
NUMARR VARCHAR2_ARR;
TEMPNUM VARCHAR2(1000) := '';
BEGIN
  SELECT TRIM(REGEXP_SUBSTR(NUM,'^.+',1,LEVEL))
  BULK COLLECT INTO NUMARR FROM 
  DUAL
  CONNECT BY LEVEL <= REGEXP_COUNT(NUM,'^.+');
  FOR I IN 1 .. NUMARR.COUNT
  LOOP 
    IF NUMARR(I) IS NOT NULL THEN
      TEMPNUM := TEMPNUM || NUMARR(I) || ',';
    END IF;
  END LOOP;
  RETURN TEMPNUM;
END;
/
2015年10月-2016年3月 总计:5个月.
2016年11月-2017年6月 总计:7个月.
2017年7月-2018年4月 总计:9个月.
2018年5月-2018年5月 总计:1个月.
2018年6月-2018年12月 总计:6个月.
2019年1月-2019年12月 总计11个月.
2020年2月-2021年2月 总计13个月.
所有总计:5+7+9+1+6+11+13=52个月(4年4个月).
本人认同二元论.我是理想主义者,现实主义者,乐观主义者,有一定的完美主义倾向.不过,一直都是咸鱼(菜鸟),就算有机会,我也不想咸鱼翻身.(并不矛盾,因为具体情况具体分析)
英语,高等数学,考研,其他知识学习打卡交流QQ群:946556683
原文地址:https://www.cnblogs.com/JimmySeraph/p/9884206.html