首页 > 代码库 > 任意一条查询sql转换为查询结果集对应的数目
任意一条查询sql转换为查询结果集对应的数目
原思路: 像括号配对一样,如果遇见select 就入栈,如果遇见from就出栈,直到栈为空,取得此时的位置,进行字符串截取。
实现方法:遇见字符s并且连续后5个字符elect 就+1,遇见字符f并且连续3个字符为rom就-1,当计数器结果为0时,返回当前字符的位置,然后进行字符串截取即可:
/**** * 获取截取位置 * @param selectSQL * @return */ public static int getSubIndex(String selectSQL){ System.out.println(selectSQL.length()); int count = 0; for(int i=0;i<selectSQL.length();i++){ char c = selectSQL.charAt(i); if(c ==‘s‘){ if(selectSQL.charAt(i+1)==‘e‘&&selectSQL.charAt(i+2)==‘l‘&& selectSQL.charAt(i+3)==‘e‘&&selectSQL.charAt(i+4)==‘c‘&& selectSQL.charAt(i+5)==‘t‘){ count++; i=i+5; }else{ continue; } }else if(c ==‘f‘){ if(selectSQL.charAt(i+1)==‘r‘&&selectSQL.charAt(i+2)==‘o‘&& selectSQL.charAt(i+3)==‘m‘){ count--; i=i+3; System.out.println(count); if(count == 0){ System.out.println(i); return i+1; } }else{ continue; } }else { continue; } } return -1; }
进行字符截取操作:
/** * 进行字符串截取 * @param inSQL * @return */ public static String getOutSQL(String inSQL){ int index = getSubIndex(inSQL); if(index != -1){ String outSQL = "select count(-1) from " + inSQL.substring(index); return outSQL; }else{ System.out.println("not a corrent sql"); return "not a corrent sql"; } }
任意一条查询sql转换为查询结果集对应的数目
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。