Java代码实现Oracle语法转换成mysql语法

如题,要求如下:
1、支持传SQL作为参数或者读文件;
2、代码清晰,要点注释;
3、尤其要支持类似如下转换:
SELECT 'DD' || 23 || '4SS' || 'D' || 'DWQ' || 'dsk' || 5524 || SYS_GUID() FROM DUAL;
SELECT CONCAT('DD', 23, '4SS', 'D', 'DWQ', 'dsk', 5524, SYS_GUID()) FROM DUAL;
或者:
SELECT 'D' || 23 || '4S' || 'D' || 'DQ' || 'dk' || 5524 || SYS_GUID() AS GUID FROM DUAL;
SELECT 'D' || 23 || '4S' || 'D' || 'DQ' || 'sk' || 5524 || SYS_GUID() GUID FROM DUAL;

代码上传后,视代码效果而定悬赏分,最低200。

1、给你思路吧,如果要代码,估计要写半天,至少500块才行,是人民币

2、我之前写过一个类似的转换,就是把任意查询语句,不管是多层还是套了N层的,转化成 查询数量的:如转成 select count(*) from tab,因为这样,效率才是最高的,分页中使用到。
3、方法: 字符串分析,
3.1把 select * from group by order by having 等等全部拆解了可解析的内容
3.2对应的数据库的函数对照替换,如mysql的now(),换oracle的sysdate..........应该设计一个字典表的方式来全部替换
3.3特殊字符串的处理,如加双引号的,或者别名
3.4你上面说的连接符的替换应该不难,用replaceAll来替换对应的符号,再单独转化就好
4、独孤码农,IT
温馨提示:内容为网友见解,仅供参考
无其他回答

Java代码实现Oracle语法转换成mysql语法
1、给你思路吧,如果要代码,估计要写半天,至少500块才行,是人民币 2、我之前写过一个类似的转换,就是把任意查询语句,不管是多层还是套了N层的,转化成 查询数量的:如转成 select count(*) from tab,因为这样,效率才是最高的,分页中使用到。3、方法: 字符串分析,3.1把 select *...

...语法批量转换实战:Oracle“DECODE函数”转成Mysql“CASE WHEN”_百 ...
在Oracle存储过程编程中,DECODE函数用于条件判断和返回值选择。然而,当需要将此代码迁移到Mysql环境时,由于Mysql不支持DECODE函数,必须用CASE WHEN语句进行等效转换。使用ZGLanguage工具,实现此转换过程。配置转换规则后,通过命令行执行转换,如:ZGLanguage -e Oracle2Mysql.syn -r PROC_TEST.prc > lo...

我想把oracle的注释改成mysql的注释 oracle语句:COMMENT ON TABLE...
我知道你使用PowerDesigner声明生成的sql建表语句,若是使用这个生成的建表语句的话,你的连接应该类型没有变应该还是之前使用的oracle的类型;若是换成mysql的类型,你生成的sql会有很大的区别。如:Oracle CREATE TABLE DCS_JS_RVMS_EQUIPMENT ( ID VARCHAR2(50) NOT NULL, PROJECT_NAME ...

如何把oracle语句改变成mysql语句
CREATE TABLE COST( ID DECIMAL(4) NOT NULL, NAME VARCHAR(50) NOT NULL, BASE_DURATION DECIMAL(11), BASE_COST DECIMAL(7,2), UNIT_COST DECIMAL(7,4), STATUS CHAR(1), DESCR VARCHAR(100), CREATIME TIMESTAMP not null default CURRENT_TI...

将ORACLE rownum rn语句转换为Mysql limit语句
SELECTLONGITUDE,OBLIGATEFROMVSOS3WHEREDATE_TIME >= '"+endTime+" 00:00:00'AND DATE_TIME <= '"+startTime+" 23:59:59'AND SITE_NUM = '"+site+"'ORDER BYDATE_TIME DESCLIMIT "+ start +" , "+ limit +"

ORACLE中的for循环怎么转为mysql的for循环
换个写法,mysql里面我也不知道如何用 for in loop来处理。例如:CREATE PROCEDURE curdemo()BEGIN DECLARE done INT DEFAULT FALSE;DECLARE a CHAR(16);DECLARE b, c INT;DECLARE cur1 CURSOR FOR SELECT id,data FROM test.t1;DECLARE cur2 CURSOR FOR SELECT i FROM test.t2;DECLARE CONTINUE ...

oracle 的sql分页语句改成mysql的分页语句
select * from cost order by cost_id LIMIT #{pageSize} OFFSET #{begin} 看看是不是这样第一个参数是要查询多少条记录也就是pageSize或者是end-begin

如何将oracle数据库转换成mysql数据库,现在公司有急用,方法可用的话再...
Job是Oracle的定时任务实现的方法,MySQL6中用Event实现,具体语法请参考MySQL手册。 在MySQL中使用event请注意,默认它是不运行的,您可以 1) 保证MySQL定时任务event scheduler运行,需要MySql 5.1.6以上,并且在启动后执行SET GLOBAL event_scheduler = ON;(也可以在初始配置文件比如my.ini中加入event_scheduler = ON的...

怎么将oracle的sql文件转换成mysql的sql文件
转换成mysql适用的数据库,从菜单栏上“Database”--->“Change Current DBMS”6 弹出“Change the Traget DBMS”窗口界面,在窗口界面里“General”--->“New DBMS”--->“MySql 5.0”,点击“确定”。7 “确定”后,你刚才导入oracle的sql现在产生的sql语句就是mysql 5.0的,按快捷键ctrl+G...

Java 动态web项目,ssh框架开发的,以前是使用Oracle数据库开发的,现在...
有映射文件就好办了。你首先把驱动改成mysql的。再将映射文件中有关id的配置修改一下。因为oracle和别的数据库不一样。配置id是都是这样的。<id name="id" type="java.lang.Long"> <column name="ID" precision="12" scale="0" \/> <generator class="sequence" > SEQ_APE_ASSET_INJESTION_...

相似回答