如何把表中有这样的值 'aaa)bbb)ccc)ddd))aa)',其实括号应该是成对出现,正确的值应该是aaa(bbb)ccc(ddd)(aa)
如何修改?实验开始
SQL> select regexp_replace('aaa)bbb)ccc)ddd))aa)','([^)]*)([)])([^)]*)([)])','\\1(\\3)')newval from dual;
NEWVAL
----------------------------------------
aaa(bbb)ccc(ddd)(aa)
上面这是位叫 温州--名次的qq网友做到的,正则表达式用的佩服
我觉的oracle 可以调用java类,用java思路实现一下
public class kuohao{
public static void main(String args[]){
kuohao kh=new kuohao();
String str="aaa)bbb)ccc)ddd))aa)";
str=kh.left(str);
System.out.println(str);
}
private String left(String str){
//可变长字符串
StringBuffer sb = new StringBuffer();
//变量 储存每个字符值
char c;
//括号 记数器
int flag=0;
for(int i=0;i<str.length();i++){
c=str.charAt(i);
if(')'==c){
flag=flag+1;
if(flag%2==1){
c='(';
}
}
sb.append(c);
}
return sb.toString();
}
}
完
打开个cmd,编译运行一下
d:\\javac kuohao.java
通过
d:\\java kuohao
----------
输出aaa(bbb)ccc(ddd)(aa)
如何修改?实验开始
SQL> select regexp_replace('aaa)bbb)ccc)ddd))aa)','([^)]*)([)])([^)]*)([)])','\\1(\\3)')newval from dual;
NEWVAL
----------------------------------------
aaa(bbb)ccc(ddd)(aa)
上面这是位叫 温州--名次的qq网友做到的,正则表达式用的佩服
我觉的oracle 可以调用java类,用java思路实现一下
public class kuohao{
public static void main(String args[]){
kuohao kh=new kuohao();
String str="aaa)bbb)ccc)ddd))aa)";
str=kh.left(str);
System.out.println(str);
}
private String left(String str){
//可变长字符串
StringBuffer sb = new StringBuffer();
//变量 储存每个字符值
char c;
//括号 记数器
int flag=0;
for(int i=0;i<str.length();i++){
c=str.charAt(i);
if(')'==c){
flag=flag+1;
if(flag%2==1){
c='(';
}
}
sb.append(c);
}
return sb.toString();
}
}
完
打开个cmd,编译运行一下
d:\\javac kuohao.java
通过
d:\\java kuohao
----------
输出aaa(bbb)ccc(ddd)(aa)
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




