java 对sql格式化
                        
                            时间:2021-07-01 10:21:17
                            帮助过:2人阅读
							                        
                     
                    
                    
                     class SqlFormat{
    public static void main(String[] args){
        String sql=""
;
        sqlFormat(sql);
    }
    public static Map<String, String> map = 
new HashMap<String, String>();
//需要换行的字段
    public static Map<String, String> bracket= 
new HashMap<String, String>();
//括号前关键字
    static{
        map.put("select", "select"
);
        map.put("from", "from"
);
        map.put("group by", "group by"
);
        map.put("where", "where"
);
        map.put("order by", "order by"
);
        bracket.put("not", "not"
);
        map.put("(", "("
);
        map.put(")", ")"
);
    }
    public static String SqlFormat(String sql){
        sql = sql.trim().replaceAll(",", ", ").replaceAll(" +", " ").replaceAll("\\s+", " ").replace(" ", " |").replace("(", "|(|").replace(")", "|)|").replace("| |", " |").replace("||", "|"
);
        sql =
 sql.toLowerCase();
        int sj=0;
//
        
        String[] sqlArray  = sql.split("\\|"
);
        int length =
 sqlArray.length;
        Stack stack = 
new Stack();
        Stack stackTemp = 
new Stack();
        for(
int i=0;i<length; i++
){
            if("("
.equals(sqlArray[i]).trim())){
                if(map.get(sqlArray[i+1].trim())!=
null){//后有关键字
                        stack.push("("
);
                        printlnSql(sqlArray[i], sj);
                }else if(bracket.get(sqlArray[i-1].trim())!=
null){//前有关键字
                        stack.push("("
);
                        printlnSql(sqlArray[i], sj);
                }else{
                        stackTemp.push("("
);
                        System.out.println(sqlArray[i]);
                }
            }else if(")"
.equals(sqlArray[i].trim())){
                if(stackTemp.size()>0
){
                        stackTemp.pop();
                        System.out.println(sqlArray[i]);
                }else{
                        stackTemp.pop();
                        sj=
stack.size();
                        printlnSql(sqlArray[i], sj);
                }
            }else if(""
.equals(sqlArray[i].trim())){
            }else if("(".equals(sqlArray[i].trim()) && map.get(sqlArray[i-1].trim())!=
null){
            }else if(map.get(sqlArray[i].trim())!=
null){
                printlnSql(sqlArray[i], sj);
            }else{
                System.out.print(sqlArray[i]);
            }
        }
        return sql;
    }
        pubulic static void printlnSql(String sqlSub, 
int i){
                if(i>0
){
                        System.out.println("\n"
);
                        for(
int j=0; j<i; j++
){
                                System.out.println("\t\t"
);
                        }
                }else{
                        System.out.println(‘\n‘+
sqlSub);
                }
        }
}
 
java 对sql格式化
标签: