java截取sql字符串中的字段别名
例如截取:select a as A,b as B,c as C from d 。 sql语句作为参数传入,所以字段个数不确定。求高手解答,用正则应该可以,但是本人不会 --------------------编程问答-------------------- str[] s = sql.split(" "); 按空格分,取得数组然后判断as 的位置
if("as".equals(s[i])){ //自己去忽略AS大小写吧
// 那么s[i+1] 就是别名。 别名在 AS的后面
}
思路大概这样,不知可行否。 没验证
--------------------编程问答-------------------- 不行,按空格截取的话,别名会和后面的逗号和列名连在一起作为一个元素放入数组 --------------------编程问答-------------------- 查询后返回的ResultSet中不是有别名吗?
sql.split("(.+ as || from .+)");
试试? --------------------编程问答--------------------
--------------------编程问答--------------------
public static void main(String args[]) throws Exception{
String sql = "select a as A,b as B,c as C from d,e";
String[] strs = Pattern.compile("([^,]+\\s+as\\s+|\\s+from\\s+.+)").split(sql);
for(String s : strs){
if(!s.equals(""))
System.out.println(s.replaceAll(",", ""));
}
}
Sql语句再加一个查询字段就不行了
补充:Java , Java相关