atitit。mssql sql server 转换mysql 及 分页sql ast的搭建

atitit。mssql sql server 转换mysql  及 分页sql ast的搭建

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

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

3. sql主要的如下::: 1

4. Mssql2MysqlConvertor (proj:wechatAdm4propt 2

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

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

3. sql主要的如下:::

作者:: 老哇的爪子 Attilax 艾龙,  EMAIL:[email protected]

转载请注明来源: 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;

}

时间: 2024-10-26 07:57:18

atitit。mssql sql server 转换mysql 及 分页sql ast的搭建的相关文章

数据库 SQL Server 到 MySQL 迁移方法总结

最近接手一起老项目数据库 SQL Server 到 MySQL 的迁移.因此迁移前进行了一些调查和总结.下面是一些 SQL Server 到 MySQL 的迁移方法. 1. 使用 SQLyog 迁移 具体方法可以参加:http://www.cnblogs.com/gaizai/p/3237907.html 优点:该迁移方法很简单,灵活,迁移时,可以进行字段的修改,比如在sql server中原来是datetime,然后迁移到mysql时你可以配置成timestamp: 成功率很高: 缺点:迁移很

Java和C#与SQL Server、MySQL和Oracle数据类型对照映射表

SQL Server.JDBC 和 Java 编程语言数据类型之间的默认映射 SQL Server 类型 JDBC 类型 (java.sql.Types) Java 语言类型 bigint BIGINT long timestamp binary BINARY byte[] bit BIT boolean char CHAR String decimal money smallmoney DECIMAL java.math.BigDecimal float DOUBLE double int I

oracle 、sql server 、mysql 复制表数据

我们知道在oracle 中复制表数据的方式是使用 create table table_name as select * from table_name 而在sql server  中是不能这么使用的 语句如下: select * into table_name from table_name; 而在 mysql 中有两种方式 1. create table a like b 2. 类似oracle的方式 create table table_name as select * from tabl

从SQL Server到MySQL的过渡

由于微软修改了SQL Server的收费策略(之前是按CPU数收钱,现在是按CPU核数收钱),导致公司每年要多多一百万美元的支出,老板阿牛觉得这样很不值,决定转向开源免费的MySQL,虽然用的也是收费版本,但是所需要的费用就要少很多了.于是乎,公司一群.net程序员开始了苦逼的迁移工作. 下面是我在迁移工作中记录的一些问题和解决方案(不定期的更新). 由于好多的T-SQL语法在MySQL中并不能使用,所以SQL的修改就成了一大工作: CONVERT(VARCHAR(10), Date, 112)

SQL Server 2012 新的分页函数 OFFSET & FETCH NEXT

DECLARE @page INT, @size INT;select @page = 300, @size = 10 SELECT *FROM gpcomp1.GPCUSTWHERE company like 'a%'ORDER BY CUSTNOOFFSET (@page -1) * @size ROWSFETCH NEXT @size ROWS ONLY; SQL Server 2012 新的分页函数 OFFSET & FETCH NEXT,布布扣,bubuko.com

通过sql server 连接mysql

图文:通过sql server 连接mysql 1.在SQL SERVER服务器上安装MYSQL ODBC驱动; 驱动下载地址:http://dev.mysql.com/downloads/connector/odbc/ 2.安装好后,在管理工具-ODBC数据源-系统DSN-添加-选择 MYSQL ODBC 5.3 Unicode DRIVER-完成 会跳出来MYSQL连接参数 Data Source Name:数据源名称 Decription:描述,随便写 Server:MYSQL服务器的IP

数据库如何从SQL server转换到SQLite

我之前用的是SQL server数据库,但是客户那里觉得安装这个大的数据库比较卡,说是导致蓝屏了,硬往SQL server上赖,没有办法客户是上帝么,给他换个小点的数据库吧!考虑acess,不行这个还是得安装客户端,必须找一个免安装的.最后终于找到了SQLite,不用安装客户端,只需要一个文件就行,在本地新建一个文本文件,改后缀名为.db,用SQLite studio软件打开这个.db文件.但是我之前数据是用SQL server做的,这就需要把数据从SQL server转换成SQLite, 这是

SQL Server和MySQL主外键写法对比

SQL Server主键的写法: --列级 create table dept ( dept_no int primary key, dept_name nvarchar(20) not null ) --表级 create table dept ( dept_no int not null, dept_name nvarchar(20) not null, primary key (dept_no) ) --修改 create table dept ( dept_no int not null

sql server与mysql数据库的链接

链接的方法:通过OLEDB接口链接 链接工具:在本地[管理工具]选择[ODBC项]在此创建mysql的数据库链. mysql的设置: 创建一个用户供sql server使用 要求:此用户拥有访问mysql指定数据库的权限 sql server的设置:在sql server数据库中创正式创建mysql库的DBLINK步骤: 选择[服务器对象]下的[链接服务器]右击鼠标选择"新建链接服务器"如图所示一步一步配置即可: 创建完成后通过以下SQL语句测试是否能正常连接: select *fro