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)
下一篇: 老男孩 歌词
对不起,这篇文章暂时关闭评论。