首页 » ORACLE » sql 匹配字符串的括号

sql 匹配字符串的括号

如何把表中有这样的值  ‘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)

打赏

对不起,这篇文章暂时关闭评论。