atitit。mssqlsqlserver转换mysql及分页sqlast的搭建
1.主要的的转换::函数的转换,分页的转换 1
2.思路::mssqlsql>>ast>>mysql 1
3.sql主要的如下::: 1
4.Mssql2MysqlConvertor(proj:wechatAdm4propt 2
1.主要的的转换::函数的转换,分页的转换
2.思路::mssqlsql>>ast>>mysql
3.sql主要的如下:::
作者::老哇的爪子Attilax艾龙,EMAIL:1466519819@
转载请注明来源:/attilax
SELECTgroupid,
groupname,
convert(varchar,createtime,120)AScreatetime,
weixinuserCount,
remark
FROM
(SELECTrow_number()over(ORDERBYcreatetimeDESC)ASrowNum,d1.groupid,
d1.groupname,
d1.createtime,
d1.remark,
(SELECTcount(d2.UserID)
FROMt_mb_weixinuserd2
WHEREd2.groupid=d1.groupid)ASweixinuserCount
FROMt_mb_groupd1
WHERE1=1)
ASgroups
WHERErowNumBETWEEN1AND10
4.Mssql2MysqlConvertor(proj:wechatAdm4propt
publicclassMssql2MysqlConvertor{
@Inject
SqlAstBuilderP32astBldr;
SqlAstP32ast;
/**
*@authorattilax老哇的爪子
*@sincep33j_t_37
*/
publicstaticvoidmain(String[]args){
Stringtxt=filex.read(pathx.classPath()+"/mssql1.sql");
txt=strUtil.replaceEnterChar2space(txt);
txt=txt.replaceAll("row_number.*?,","");
Mssql2MysqlConvertorx=newMssql2MysqlConvertor();
Stringsql_mysql=x.convert(txt);
System.out.println(JsonX.toJsonStrO88(x.ast));
System.out.println(sql_mysql);
}
/**
*@authorattilax老哇的爪子
*@return
*@sincep33m_j_45
*/
privateStringconvert(Stringtxt){
Stringpage_s=strUtil.find("rowNum(.+)BETWEEN.+and.+$",txt).get(0)
.toString();
page_s=strUtil.replaceDoubleSpace(page_s);
String[]a=page_s.toUpperCase().trim().split("BETWEEN");
String[]a2=a[1].toLowerCase().trim().split("and");
SqlPageParamp=newSqlPageParam();
p.startIndex=Integer.parseInt(a2[0].trim())-1;
p.pagesize=Integer.parseInt(a2[1].trim());
ast=newSqlAstP32();
ast.preOther=txt.substring(0,txt.indexOf(page_s));
ast.pagePart=p;
if(ast.preOther.trim().toLowerCase().endsWith("where"))
ast.preOther=ast.preOther+"1=1";
returnast.preOther+"limit"+p.startIndex+","+p.pagesize;
}