Oracle 字段拆分替换在合并成一条
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Oracle 字段拆分替换在合并成一条,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2656字,纯文字阅读大概需要4分钟。
内容图文
![Oracle 字段拆分替换在合并成一条](/upload/InfoBanner/zyjiaocheng/480/300308c4402d49c5978c57d67fc16bb7.jpg)
Substr 截取字符串
Instr 查找字符串出现的位置标号
SELECT var_value,SUBSTR(var_value,1,INSTR(var_value,‘,‘)-1)
FROM col_split ;
出现的情况说明 第3条数据是null ,因为找不到‘,’号,所以没有值,同样如果截取第二段的值,第2条数据将会出现null,而且如果字段长度大,分割的多这种写法就会大量的冗余,看起来非常的复杂。
方案二:
REGEXP_SUBSTR 函数使用
SELECT REGEXP_SUBSTR (var_value, ‘[^,]+‘, 1,ROWNUM)
FROM col_split
CONNECT BY ROWNUM <=
LENGTH (var_value) - LENGTH (REPLACE (var_value, ‘,‘,‘‘)) + 1
当表中只存在一条数据的时候这个可以很好的解决,但是如果多条跟方案一一样会产生null,此时产生想法,循环遍历是否会好些--方案三。
方案三:
利用plsql 循环遍历value值,并进行分割
试着写一种是count条数直接循环,另一种是使用游标将结果集遍历出来,但是遇到问题在做正则修改然后into的时候,plsql是不允许在这个时候使用收集的。
例子:
DECLARE
var_values VARCHAR2(80);
i NUMBER:=0;
TYPE filter IS TABLE OF VARCHAR2(1000);
s_filter filter;
CURSOR cursor_split IS SELECT var_value FROM col_split;
BEGIN
OPEN cursor_split;
LOOP
i := i+1;
dbms_output.put_line(var_values);
FETCH cursor_split INTO var_values;
SELECT REGEXP_SUBSTR (var_values, ‘[^,]+‘, 1,ROWNUM) INTO s_filter
FROM col_split
CONNECT BY ROWNUM <=
LENGTH (var_values) - LENGTH (REPLACE (var_values, ‘,‘,‘‘)) + 1 ;
EXIT WHEN cursor_split%NOTFOUND;
END LOOP;
dbms_output.put_line(i);
END;
最后想到使用shell处理,shell截取字段在做替换就ok一种直接取字段做替换,第二种是我想说的,spool + sed
Spool将数据库字段按照想要的格式拼接查询,然后生成txt文本。然后在使用sed替换文本内容就OK了。这样表中字符型的字段名称可以对应上说明。看起来更方便。
如下例子:
#!/bin/sh
sqlplus -s user/userpwd@sid << !
set head off #输出标题域,缺省为on
set linesize 30000 #一行的长度
set echo off #显示sqlplus的每个sql命令本身
set feedback off #回显本次sql命令处理记录的行数
set pagesize 0 #输出每页行数,24 设定成0 ,为了防止分页
set termout off #显示脚本中的命令的执行结果
set trimout on #去除标准输出每行的拖尾空格,缺省为off
set trimspool on #去除重定向(spool)输出每行的拖尾空格 缺省为off
spool /home/expdata.txt 输出定向的位置,写入文件
select * from object.table_name where rownum=1;
spool off
exit
!
sed ‘s/需要替换掉的/替换的值/g‘; ‘s/需要替换掉的/替换的值/g‘ expdata.txt
OK 这是查看expdata.txt 文本文件就OK了。
Oracle 字段拆分替换在合并成一条
标签:生成 ble tput txt instr begin 循环 spool 找不到
本文系统来源:http://www.cnblogs.com/sun-chao/p/6756354.html
内容总结
以上是互联网集市为您收集整理的Oracle 字段拆分替换在合并成一条全部内容,希望文章能够帮你解决Oracle 字段拆分替换在合并成一条所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。