博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
atitit。mssql sql server 转换mysql 及 分页sql ast的搭建
阅读量:7156 次
发布时间:2019-06-29

本文共 1856 字,大约阅读时间需要 6 分钟。

atititmssql sql server 转换mysql  及 分页sql ast的搭建 

 

 

 

1. 主要的的转换::函数的转换,分页的转换

2. 思路::mssql sql >>ast>>mysql

3. sql主要的如下:::

 

作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:1466519819@qq.com

转载请注明来源: http://blog.csdn.net/attilax

 

SELECT groupid,

       groupname,

       convert(varchar, createtime, 120) AS createtime,

       weixinuserCount,

       remark

FROM

  (SELECT row_number() over(                             ORDER BY createtime DESC) AS rowNum,                       d1.groupid,

                       d1.groupname,

                       d1.createtime,

                       d1.remark,

 

     (SELECT count(d2.UserID)

      FROM t_mb_weixinuser d2

      WHERE d2.groupid=d1.groupid)AS weixinuserCount

   FROM t_mb_group d1

   WHERE 1=1) 

   

   

   AS groups

WHERE rowNum BETWEEN 1 AND 10

4. Mssql2MysqlConvertor (proj:wechatAdm4propt 

 

public class Mssql2MysqlConvertor {

 

@Inject

SqlAstBuilderP32 astBldr;

SqlAstP32 ast;

 

/**

 * @author attilax 老哇的爪子

 * @since p33 j_t_37

 */

public static void main(String[] args) {

String txt = filex.read(pathx.classPath() + "/mssql1.sql");

txt = strUtil.replaceEnterChar2space(txt);

txt = txt.replaceAll("row_number.*?,""");

 

Mssql2MysqlConvertor x = new Mssql2MysqlConvertor();

String sql_mysql = x.convert(txt);

 

System.out.println(JsonX.toJsonStrO88(x.ast));

System.out.println(sql_mysql);

 

}

 

/**

 * @author attilax 老哇的爪子

 * @return

 * @since p33 m_j_45

 */

private String convert(String txt) {

String page_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");

SqlPageParam p = new SqlPageParam();

p.startIndex = Integer.parseInt(a2[0].trim()) - 1;

p.pagesize = Integer.parseInt(a2[1].trim());

ast = new SqlAstP32();

ast.preOther = txt.substring(0txt.indexOf(page_s));

ast.pagePart = p;

if (ast.preOther.trim().toLowerCase().endsWith("where"))

ast.preOther = ast.preOther + " 1=1 ";

return ast.preOther + " limit " + p.startIndex + "," + p.pagesize;

 

}

 

你可能感兴趣的文章
细节是魔鬼
查看>>
maven 搭建私服
查看>>
关于 Python 的升级,真不是那么好升的。。。
查看>>
JavaScript对象模型-执行模型
查看>>
Flex读取本地文件
查看>>
Java ConcurrentModificationException 异常分析与解决方案
查看>>
Python发送邮件
查看>>
贪吃蛇系列之十一——总结
查看>>
AT域名,什么是AT域名?
查看>>
my97DatePicker选择年、季度、月、周、日
查看>>
mysql 链接逐步调试
查看>>
ProgressDialog的简单应用,等待提示
查看>>
c3p0配置内容详解
查看>>
git常用命令
查看>>
SUSE系统中如何将本地软件包目录作为一个zypper源
查看>>
Spread Studio for Winform :实现编辑状态下文本居中
查看>>
2015年互联网女皇趋势报告中文版
查看>>
Styled PageControl
查看>>
Flip View
查看>>
监控 Linux 性能的 18 个命令行工具
查看>>