使用ssm框架的java项目由mysql转oracle遇到问题

来源:互联网 发布:php登录代码 编辑:程序博客网 时间:2024/06/07 05:31
1、数据值为空的数据mysql返回为“”,前台后取值也是空。但oracle返回的确实null,当前台用val赋值时并不会出现大问题,但当用text或html赋值时,显示值为string格式的null。
2、sql语句中若有DISTINCT时,若进行order排序,mysql不会有问题,但若排序字段不在查询字段中则会报ORA-01791: not a SELECTed expression错误,需去除去重或查询排序字段方可。
3、oracle中NVARCHAR2字符集类型不推荐使用,该类型虽然是中文字符集但与‘是’这种参数并不一致,会出现字符集不匹配错误。
4、oracle排序与mysql排序结果是不一致的。
5、oracle中字段名不可以数字符号开头,中间不可出现除_外的其他符号。
6、使用map接收oracle数据时,需要转换time、clob等类型数据,否则无法进行json数据转换。
7、oracle不能直接插入null型字段值。
8、mysql中使用的部分字段名或别名在oracle中是关键字,需修改。
9、` 符号在mysql中被使用但oracle中不能出现。
10、mysql时使用的sql语句常有;结尾的语句,但oracle中不能出现;结尾,因为oracle解析器很严谨,不支持;结尾语句解析。
11、mysql中使用的部分系统函数在oracle中不能使用,需要修改或在oracle中添加自定义函数实现对应功能。
12、oracle与mysql建表语句差异:
oracle:
添加字段的语法:alter table tablename add (columnname datatype(length) default value null/not null,….);
修改字段的语法:alter table tablename modify (columnname datatype(length)default value null/not null,….);
删除字段的语法:alter table tablename drop (name,name1,..)/(name)/column name;
其中添加修改时不能出现column,但删除时若用column只能删单条,用括号则可删单条或多条都可以。
mysql则不同:
添加字段语法:alter table tablename add (columnname datatype(length) null/not nuil  deaflut value,...);
修改字段语法:alter table tablename modify columnname datatype(length) null/not nuil  deaflut value,modify 。。。;
删除字段语法:alter table tablename drop column columnname,drop column name2,...;
其中删除的column可有可无
且mysql执行多条变更语句可直接用逗号隔开,如:alter table tablename add(aaa varchar(100),bbb varchar(100)),drop aaa,drop bbb;
但oracle语句必须一条条执行,一条alter table语句只能执行一种操作。
13、mysql与oracle的表注释与列注释方式不一致,mysql可在建表语句中直接追加注释语句,但oracle必须先进行建表后再依次对表和字段进行注释,且一次只能注释一个字段。
原创粉丝点击