1、首先在计算机中,打开Oracle的连接程序,查看表中重复的数据。
成都创新互联专注于城口网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供城口营销型网站建设,城口网站制作、城口网页设计、城口网站官网定制、微信小程序定制开发服务,打造城口网络公司原创品牌,更为您提供城口网站排名全网营销落地服务。
2、然后使用distinct,去除函数查询出去掉重复后的数据。
3、接着创建新表,把去掉重复的数据插入到新表中。
4、然后使用truncate,清空原表中的数据。
5、最后再向原表中插入新表中重复的数据,即可达到去重复数据的效果。
你应该希望提取的字段只要含有数字就提出,剔除空和不含数字的字符串。
select
*
from
table
where
regexp_substr(check,'[0-9]+')
is
not
null
可以通过REGEXP_SUBSTR函数(配合正则表达式)来实现。
举例:
sql:select regexp_substr('CYJ8-ABC','[0-9]+') from dual;
以上sql执行结果:8;
备注:
REGEXP_SUBSTR函数格式如下:
function REGEXP_SUBSTR(String, pattern, position, occurrence, modifier)
__srcstr :需要进行正则处理的字符串
__pattern :进行匹配的正则表达式
__position :起始位置,从第几个字符开始正则表达式匹配(默认为1)
__occurrence :标识第几个匹配组,默认为1
__modifier :模式('i'不区分大小写进行检索;'c'区分大小写进行检索。默认为'c'。)
实现的方法和详细的操作步骤如下:
1、第一步,新建一个测试表,见下图,转到下面的步骤。
2、第二步,执行完上面的操作之后,将测试数据插入,见下图,转到下面的步骤。
3、第三步,执行完上面的操作之后,查询表中数据,可以发现字段中带“-”字符,见下图,转到下面的步骤。
4、第四步,执行完上面的操作之后,编写sql,把字段中的字符‘-’去掉,代码见下图。这样,就解决了这个问题了。
如果Oracle版本不是太低的话,使用 正则表达式函数 REGEXP_SUBSTR 处理。
5个参数
第一个是输入的字符串
第二个是正则表达式
第三个是标识从第几个字符开始正则表达式匹配。(默认为1)
第四个是标识第几个匹配组。(默认为1)
第五个是是取值范围:
i:大小写不敏感;
c:大小写敏感;
n:点号 . 不匹配换行符号;
m:多行模式;
x:扩展模式,忽略正则表达式中的空白字符。
SQL SELECT
2 REGEXP_SUBSTR(a,'[0-9]+')
3 FROM
4 test_reg_substr
5 WHERE
6 REGEXP_LIKE(a, '[0-9]+');
这个最后写个split函数,然后取数组的第三个数据。
CREATE OR REPLACE TYPE mytable AS TABLE OF varchar2(100);
create or replace function split(src varchar2, delimiter varchar2)
return mytable is
psrc varchar2(500);
a mytable := mytable();
i number := 1; --
j number := 1;
begin
psrc := rtrim(ltrim(src, delimiter), delimiter);
loop
i := instr(psrc, delimiter, j);
--dbms_output.put_line(i);
if i 0 then
a.extend;
a(a.count) := trim(substr(psrc, j, i - j));
j := i + 1;
--dbms_output.put_line(a(a.count-1));
end if;
exit when i = 0;
end loop;
if j length(psrc) then
a.extend;
a(a.count) := trim(substr(psrc, j, length(psrc) + 1 - j));
end if;
return a;
end;