在一个oracle数据库库中有n多表, 只知道在这些表中的某个字段存在这样的格式固定的数据:如0001.123456789
怎么样才能匹配到这种数据存在哪个表中?
代码如下:
public static void main(String[] args) throws SQLException,ClassNotFoundException {
Class.forName(“oracle.jdbc.driver.OracleDriver”);
Connection c = DriverManager.getConnection(“jdbc:Oracle:thin:@127.0.0.1:1521:orcl”, “scott”, “tiger”);
Statement s = c.createStatement();
//通过数据字典来查询用户下所用表
ResultSet tabres = s.executeQuery(“select t.table_name from user_tables t”);
Set set=new HashSet();
while (tabres.next()) {
Statement st = c.createStatement();
//在单个单个表查询匹配字段数据
ResultSet res = st.executeQuery(“select * from “+tabres.getObject(1));
int count=res.getMetaData().getColumnCount();
boolean falg=false;
while(res.next()){
for(int i=1;i<=count;i++){
if(!””.equals(res.getObject(i))&&null!=res.getObject(i)){
String str=res.getObject(i).toString();
//通过正则匹配特定数据
if(regexp(str)){
set.add(tabres.getObject(1));
}
}
}
}
}
s.close();
//打印
System.err.println(set);
}
public static boolean regexp(String str){
Pattern pattern = Pattern.compile(“^.*?[0-9]{4}\.[0-9]{9}”);
Matcher matcher = pattern.matcher(str);
return matcher.matches();
}
评论列表
文章目录