我有一个示例查询为:
create table Temp as select col1,col2 from mydb;
create table Filter as select col1 from Temp;
在上面的字符串Temp
和Filter
在任何情况下都可以是。
即上部、下部、驼色或拨动式。
如何忽略所有可能的组合,如驼色大小写,切换临时表的大小写,并将其替换为字符串中的大小写。
以下是我尝试过的以下代码:这里的查询参数包含上述两个字符串,并用";"分隔。钥匙包含温度/过滤器。
public String replaceQuery(String query,String key){
StringBuffer sb = new StringBuffer();
String regx = "[a-zA-Z0-9]";
Pattern patt = Pattern.compile(regx);
String[] ss = query.split(";");
for(String str : ss){
Matcher mat = pattern.matcher(str);
while(mat.find()){
}
}
}
但我无法进一步了解如何删除单词Temp/Filter的所有大小写并将其替换为String。在这方面有人能帮我吗?
您可以使用PatternCASE_INSENSTIVE
标志作为Pattern的一部分。
示例:
Pattern p = Pattern.compile(Pattern.quote("TEMP"), Pattern.CASE_INSENSITIVE);
下面是一个查询示例:
CREATE TABLE Temp AS SELECT col1,col2 from mydb;
其中单词CCD_ 4将被CCD_
注意key
是如何设置为TEMP
的,但并不重要
public static void main(String[] args) throws Exception {
String query = "CREATE TABLE Temp AS SELECT col1,col2 from mydb;";
String key = "TEMP";
String newKey = "MyTempTable";
Pattern p = Pattern.compile(Pattern.quote(key), Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(query);
StringBuffer sb = new StringBuffer();
while (m.find()) {
m.appendReplacement(sb, newKey);
}
m.appendTail(sb);
String newQuery = sb.toString();
System.out.println(newQuery);
}
输出:
CREATE TABLE MyTempTable AS SELECT col1,col2 from mydb;