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;
}
相关文章
- Mac下mysql Can ‘t connect to local MySQL server through socket ‘u002Ftmpu002Fmysql.sock ‘
- MySQL连接函数研究与实现(mysql连接函数)
- 的功能比较比较SQL Server与MySQL的功能优劣(sqlserver与mysql)
- 转换MySQL字符串转换大小写技巧(mysql字符串小写)
- ?MySQL字符集转换攻略(mysql转码)
- MySQL如何实现交换分区(mysql交换分区)
- MySQL时间戳转换:给出精准答案(mysql时间戳的转换)
- MySQL时间戳转换为字符串的方法(mysql时间转换字符串)
- MySQL中将时间转换为时间戳(mysql时间转时间戳)
- 转换MySQL实现汉字拼音转换功能(mysql汉字拼音)
- 调查解开MySQL表锁之谜(mysql表被锁了)
- MySQL如何将日期转换为秒(mysql日期转秒)
- MySQL时间转换为秒: 手把手教你!(mysql时间转换成秒)
- 深入学习MySQL:查看表的命令示例(mysql命令查看表)
- 转换MySQL二进制数据转换方法研究(mysql二进制数据)
- 快速修复 MySQL 数据表的方法(mysql数据表修复)
- 如何解决MySQL版本兼容性问题(mysql版本问题)
- MySQL实现级联复制的简易技术.(mysql级联复制)
- 由MySQL转换到SQLite的技术实现(mysql转sqlite)
- MySQL 中 使用日期默认值的简单设置(mysql日期默认值)
- MySQL中如何转换时间格式(mysql的时间格式转换)
- MySQL数据库:如何导出建库语句(mysql导出建库语句)
- MySQL中使用CASE语句进行条件判断和数据转换的实现方法(mysql中case语句)
- MySQL数据库的处理和转换时间格式技巧(c mysql 时间格式)
- MySQL表数据列转换为行实现拼接(mysql两表列转行)
- MySQL数据库操作如何快速查询前3行数据(mysql中前3行)
- Mysql实现数据转换将一列数据转换为多行数据(mysql 一列转多行)
- MYSQL收费了 了解MySQL开源版的最新政策(mysql不再免费了吗)