Oracle 数据库迁移到MYSQL语句部分问题

最近在做Oracle迁移数据到MYSQL,发现俩个数据库中的有很多的语法不对,自己各种百度以及咨询别人,特写此文章------让你不踩坑不迷路

Oracle中的decode

Oracle中的decode是一个用于判断的一个函数
decode(条件,值1,返回值1,值2,返回值2,…值n,返回值n,缺省值)

decode函数怎么用

下面展示一些 内联代码片

select decode ( 1+2,3,'a',5,'b') from dual

select decode ( 1+4,3,'a',5,'b') from dual
// 示例1:输出结果为a
select decode ( 1+2,3,'a',5,'b') from dual
// 示例2:输出结果为b
select decode ( 1+4,3,'a',5,'b') from dual

如果使用MYSQL怎么转换

下面以上面的Oracle的写法展示一下 Mysql的写法

// MYSQL写法
	SECLECT CASE 1+4
	WHEN 3 THEN
     'a'
	WHEN 5 THEN
     'b'
	ELSE
		'c'
	END;
	from DUAL
// 坑来了,注意躲着点
CASE case_value
	WHEN when_value THEN
		statement_list
	ELSE
		statement_list
END CASE;
--------------------------
上面这个是MYSQL输入case自动出来的东西
但是如果加上END  后面的CASE就会提示错误
不信的可以去踩下坑,我踩过了就不踩了,你们可以多踩踩

Oracle的自己人(自己独有的表)

目前只接触到俩个,欢迎大佬进行再补充

user_tab_columns 是保存了当前用户的表、视图和Clusters中的列等信息,用于oracle获取表结构

那么提到这个不得不提它的同父同母的兄弟了

user_tab_colsuser_tab_columns相比多了以下几列
HIDDEN_COLUMN VARCHAR2(3)
VIRTUAL_COLUMN VARCHAR2(3)
SEGMENT_COLUMN_ID NUMBER
INTERNAL_COLUMN_ID NOT NULL NUMBER
QUALIFIED_COL_NAME VARCHAR2(4000)


MYSQL的自己人(内表)

MySQL版本大于5.0时,有个默认数据库
information_schema
里面存放着所有数据库的信息(比如表名、 列名、对应权限等),通过这个数据库,我们就可以跨库查询,爆表爆列
那么我怎么去用这个内表呢,萌新教程来了

下面展示一些 查询代码片段来啦

//很简单,很实用
select * from information_schema.columns

MYSQL和ORACLE的日期差距

MYSQL

ORACLE

当前时间

date_format(date,’%Y-%m-%d’)

to_char(sysdate,‘yyyy-MM-dd’)

当前日期后30天

DATE_FORMAT( date_add(now(), interval 30 day), ‘%Y-%m-%d’ )

to_char(sysdate+30,‘yyyy-mm-dd’)

日期的相关链接 关于计算的转换问题:

使用unsigned和signed的不同

23行:在使用signed时转换负数时没问题,但是在使用unsiged时会出现下面这个问题

mysql工具数据迁移 mysql如何迁移数据库_mysql


24行:在使用signed和unsiged时转空不会出现不同

mysql工具数据迁移 mysql如何迁移数据库_oracle_02