博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sqlserver数据库迁移至oracle数据库(下)
阅读量:5142 次
发布时间:2019-06-13

本文共 1994 字,大约阅读时间需要 6 分钟。

目录:

7、部分函数在oracle中不存在,或使用方法不同:

  比较常见的是这些函数top、convert、getdate()

------------top返回确定数目的数据(例如前10条记录)--------------select top 10 * from uu_user_function uuf where uuf.[function] = 12;------------下面显示的是总数目10%条的记录----------------------select top 10 percent * from uu_user_function uuf where uuf.[function] = 12;

  top函数在oracle中不存在,如果返回确定数目的时候,可以使用rownum替代。

  convert()函数用于处理日期使用不同的格式显示

------在sqlserver中------SELECT CONVERT(varchar,GETDATE(),120);------在oracle中---------select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;

 

8、表别名 不使用as,列别名,as可有可无;使用别名时注意不要使用单引号:

  在sqlserver中表和列使用别名时 as 可有可无,但在oracle中,表使用表名时,不能使用as;

  别名可以使用双引号或者不使用引号,但是如果别名是多个字符串,必须使用双引号。

select s.id skillid,       s.skillname "技能名称",       to_char(s.skilldesc) as "skill desc",       s.skilltype 技能类型  from skill /*as */ s;

 

9、如果选择列有时间字段需要显示时分秒,需要to_char:

  这个本不是问题,如果原来使用的是convert时间显示是'2012-12-31 23:59:59',目前oracle数据库中该字段存储的数据就是这样的格式

sql.append("select bdr.id,to_char(bdr.createDate,'yyyy-MM-dd') as createDate, ");        sql.append("to_char(bdr.createTime,'yyyy-MM-dd hh24:mi:ss') as createTime,to_char(bdr.planOfDay),to_char(bdr.nodule), ");

  代码中的createDate和createTime在oracle中的格式都是date,包含年月日时分秒。

Query query = getSession().createSQLQuery(sql);//如果去掉上面代码中bdr.createDate和bdr.createTime的to_char(),在这里得到的list里面的时间格式就已经没有了时分秒

 

10、oracle中区分大小写,新增或查询数据时需做相应调整:

  关于oralce区分大小写,应该大家都很清楚。sql关键字不区分大小写,对象名和列名不区分大小写,但是字符值和日期值区分大小写

----user_tables 显示当前用户所有表 的视图---- select * from user_tables ut where ut.tablespace_name = upper('users');

 特别是检索信息的时候,如果输入的字符串未做处理,而且数据库中刚好存储的是大写,这样就会导致检索不出想要的数据。当然你可以在前台控制输入大小写,或者后台toLowerCase()

或toUpperCase(),或者在sql中upper()或lower(),或者更改数据库数据。也许你会有更好的办法。

 

11、如需修改表名,请确认是否有其它系统使用此表,并使用旧表名新建新表名的同义词:

  这里有一个教训,迁移数据库后,更改了两个表名,当然忘记考虑了一下,是不是有其他系统使用这两个表,结果导致了另外一个项目的一个模块几近瘫痪。还好当时立刻新建了两个同义词,算是搞定了。其实后来才知道,在数据库中,更改表名等同于删除表,很严重的。

 

12、oralce的分页sql,如果排序字段不唯一,导致分页数据重复:

    这种情况用户一般从前台使用时,很难发现,因为只有在所有的排序字段都不能唯一确定数据的时候,才会出现。

  没有什么好办法,在排序字段里面增加一个唯一数据的字段就可以了,比如主键,因为oracle的排序算法不具稳定性。

转载于:https://www.cnblogs.com/wcj112/p/3382193.html

你可能感兴趣的文章
查询数据库锁
查看>>
我对于脚本程序的理解——百度轻应用有感
查看>>
面试时被问到的问题
查看>>
spring 事务管理
查看>>
VS2008 去掉msvcr90的依赖
查看>>
当前记录已被另一个用户锁定
查看>>
Node.js 连接 MySQL
查看>>
那些年,那些书
查看>>
注解小结
查看>>
java代码编译与C/C++代码编译的区别
查看>>
Bitmap 算法
查看>>
转载 C#文件中GetCommandLineArgs()
查看>>
list control控件的一些操作
查看>>
LVM快照(snapshot)备份
查看>>
绝望的第四周作业
查看>>
一月流水账
查看>>
npm 常用指令
查看>>
判断字符串在字符串中
查看>>
Linux环境下Redis安装和常见问题的解决
查看>>
HashPump用法
查看>>