网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 论文素材 设计下载 最新论文 下载排行 论文上传 在线投稿 联系我们
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > ORACLE > 正文
ORACLE-删除同一字段中重复值函数
来源:Http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 12/12/01
下载{$ArticleTitle}原创论文样式

  有时候我们可能需要将查询得到的结果进行重复值的筛选,例如我们用下面的SQL语句查询出结果

  语句:

Select SEQ_NO,REPORT_NO from Imp_Report

  结果:

SEQ_NO    REPORT_NO
-------------------------------
N320410A091130000600   320410109092905,320410109093647,320410109095568,320410109093647
N320410A091130000601   320410109096320,320410109097222,320410109097222

  实际想要的结果:

SEQ_NO    REPORT_NO
-------------------------------
N320410A091130000600   320410109092905,320410109093647,320410109095568
N320410A091130000601   320410109096320,320410109097222

  我自己研究写了个函数

  SQL语句

 1 CREATE OR REPLACE FUNCTION FUN_IMP_REPORT_EXCLUDE_REPEAT(Report_No IN NVARCHAR2)
 2   RETURN NVARCHAR2 IS
 3   StrReportNo  NVARCHAR2(2000);
 4   StrTemp      NVARCHAR2(2000);
 5   TempReportNo NVARCHAR2(2000);
 6 BEGIN
 7   StrReportNo  := '''';
 8   StrTemp      := '''';
 9   TempReportNo := Report_No;
10   LOOP
11     --判断参数有没有值
12     IF INSTR(TempReportNo || '','', '','', 1, 1) > 1 THEN
13       --以'',''分隔截取字段
14       StrTemp := SUBSTR(TempReportNo,
15                         1,
16                         INSTR(TempReportNo || '','', '','', 1, 1) - 1);
17     END IF;
18     --判断是否已经存在相同值,这里前后一定要加分隔符
19     IF INSTR('','' || StrReportNo || '','', '','' || StrTemp || '','', 1, 1) = 0 THEN
20       --累加不同结果
21       StrReportNo := StrReportNo || '','' || StrTemp;
22     END IF;
23     --将判断过的字段删除掉
24     TempReportNo := SUBSTR(TempReportNo,
25                            INSTR(TempReportNo || '','', '','', 1, 1) + 1);
26     --参数所有值完成过滤判断后跳出循环
27     EXIT WHEN length(TempReportNo) = 0 or TempReportNo is null;
28   END LOOP;
29   RETURN SUBSTR(StrReportNo, 2); --累加时其实是以'',''开始的
30 END FUN_IMP_REPORT_EXCLUDE_REPEAT;

  最终的SQL语句:

Select SEQ_NO,FUN_IMP_REPORT_EXCLUDE_REPEAT(REPORT_NO) from Imp_Report

  出处:http://dolphin0714.cnblogs.com/    

(责任编辑:admin)

网学推荐

免费论文

原创论文

浏览:
设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved
湘ICP备09003080号