atitit。mssql sql server 转换mysql 及 分页sql ast的搭建
atitit。mssql sql server 转换mysql 及 分页sql ast的搭建
2. 思路::mssql sql >>ast>>mysql 1
4. Mssql2MysqlConvertor (proj:wechatAdm4propt 2
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(0, txt.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;
}
相关文章
- 【Mysql 学习】MERGE存储引擎(一)
- MySQL大批量导入导出实践
- MySQL server has gone away报错原因分析
- MySQL运行外部脚本的那些坑
- mysql数据库的主从同步,实现读写分离 g
- Nginx配置WebService、MySQL、SQL Server、ORACLE等代理
- mysql 常用命令,连接数据库,查看建表语句,批量导入数据,批量更新数据,连接查询
- MySQL内核月报 2014.12-MySQL· 捉虫动态·Opened tables block read only
- 关于MySQL的在线扩容
- MySQL explain执行计划详解
- [转]2006 MySQL server has gone away错误,最大值溢出解决办法 mysql max_allowed_packet 查询和修改
- piap.excel 微软 时间戳转换mssql sql server文件时间戳转换unix 导入mysql
- 【异常】MySQL Workbench 报错 Error changing account root@localhost : The MySQL server is running with
- You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near
- file /usr/share/mysql/charsets/README from install of MySQL-server-5.1.73-1.glibc23.i386 conflicts with file from package mysql-libs-5.1.73-8.el6_8.i686
- 如何实现MySQL表数据随机读取?从mysql表中读取随机数据
- [django1.6]跑批任务错误(2006, 'MySQL server has gone away')
- MySQL (1038, ‘Out of sort memory, consider increasing server sort buffer size‘)
- MySQL-触发器