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_cols 和user_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时会出现下面这个问题
24行:在使用signed和unsiged时转空不会出现不同