Sql-oracle and sqlserver differences
1.string contact operator
Sqlserver use + or contact(sqlserver 2012)
In oracle, you can also use contact, but you can not used + to contact string, you should use ||;
2.oracle date time is different with sqlserver date.
Sqlserver date just have date part, not contains time part.
Oracle date format has date and time part.
This is a big difference.
但是如何你使用oracle sql developer, 不修改默认的设置,你查询
Select sysdate from dual;是看不到时间part的,你可以使用
Select to_char(sysdate,'yyyy-mm-dd hh24:mi:ss') from dual;
可以清楚地看到时间与日期部分,当然如果你更改了配置,或者使用的其他数据库查询工具,
也许可以看到时间部分,例如我使用的dbever就可以直接看到。
oracle中的timestamp基本等同行sqlserver中的datetime2类型,包含timezone和一定量级的秒值。
oracle中的时间转换使用to_date(datestring,dateformat);
例如:to_date('1990-11-12','yyyy-mm-dd');
3.oracle not support table alias with as.
So you can write the following statement.
Select * from table as alias;
如果你在query中添加派生字段,oracle 需要加别名。否则会报错。如下:
select rownum,* from HR.COUNTRIES ;
Report error: ORA:00936, missing expression.
改成如下即可使用:
select rownum,c.* from HR.COUNTRIES c;
4.oracle和sqlserver中的hash函数,
sqlserver中支持checksum(binary_checksum)和hashbytes等函数,详见MSDN。
oracle中支持ora_hash(10g起)等函数
select OWA_OPT_LOCK.CHECKSUM(rid || rowname),
ora_hash(rid || rowname,1024,1) ,
ora_hash(to_char(rid) || rowname,1024,1),
dbms_utility.get_hash_value(rid || rowname,1,1024)
from test;
仅分享一个使用心得,oracle中,如果你使用hash函数来进行数据比对,建议使用ora_hash,
首先是因为它是系统本身支持,不需要第三方的包,不需要另外赋权限,当比对的内容过百万的时候,
它的速度要远远优于owa_opt_lock.checksum函数的计算速度。
5.sqlserver 中的top 在oracle中要使用rownum<=n来代替。
oracle中的字符比较默认是区分大小写的,而sqlserver是要看配置的,默认不区分大小写。
oracle中的对象(列名等)长度不能超过三十。
如果列名中含有空格等,可以使用"",而在sqlserver中使用[];
6.在oracle中字符串为空时表示为null,而在sqlserver中却不同。
insert into test(rid,rowname) values(3,'');
在sqlserver中查询使用select * from test where rowname='' or len(rowname)=0;
在oracle中如此查询就找不到值,而需要使用如下:
select * from test where rowname is null;
7.其他区别
因为 sqlserver扩展了标准的sql,称为TSQL,是有许多强大之处的。
例如它的CTE是允许直接进行更新的,所以有时候你写一个逻辑逻辑的CTE,最后直接更新值。
而在oracle中是不允许这种写法的。
所以当在oracle中update(delete)一张表的某些记录时,但要引用到其他多张表时,就比较麻烦,
需要写成update(delete) … where exists (not exists)这种方式。
如果需要用其他的表值更新,还要写在set后面用子查询,非常不爽。
后来merge的出现,在一定程度上缓解了这种不爽,但仍不及sqlserver的好用。
Sql-oracle and sqlserver differences的更多相关文章
- 为什么说JAVA中要慎重使用继承 C# 语言历史版本特性(C# 1.0到C# 8.0汇总) SQL Server事务 事务日志 SQL Server 锁详解 软件架构之 23种设计模式 Oracle与Sqlserver:Order by NULL值介绍 asp.net MVC漏油配置总结
为什么说JAVA中要慎重使用继承 这篇文章的主题并非鼓励不使用继承,而是仅从使用继承带来的问题出发,讨论继承机制不太好的地方,从而在使用时慎重选择,避开可能遇到的坑. JAVA中使用到继承就会有两 ...
- 通过Oracle sql developer从sqlserver迁移数据到oracle
通过Oracle sql developer工具从sqlserver迁移数据到oracle 序言 一般情况下,sqlserver数据迁移到oracle,我们可以使用ODI来进行.但ODI的安装.配置. ...
- 你搞懂 ORACLE、 SQLSERVER、MYSQL与DB2的区别了吗
ORACLE. SQLSERVER.MYSQL与DB2的区别--平台性: Oracle.MYSQL与DB2可在所有主流平台上运行: SQL Server只能在Windows下运行: --安 ...
- oracle与sqlserver部分区别
oracle和sqlserver的区别:1,执行修改操作要接commit,不然数据仅仅只是查看,并不是提交数据2,oracle不能使用select 字段 这种查看方式查看数据:3,oracle存储过程 ...
- ORACLE连接SQLSERVER
一.实验(实验成功) 1.实验目标:ORACLE连接SQLSERVER以及查询数据 2.搭建的环境: oracle 9i 9.0.2.0.1 地址:192.168.40.139 sql2000 的数据 ...
- 采用Hibernate框架的研发平台如何能够真正兼容Oracle和sqlServer数据库
都说Hibernate框架的使用可以很容易的让你的研发平台支持多种不同类型的数据库,但实践表明,这里的“容易”,是相对的. 想让研发平台支持多种数据库,并不是一件简单的事,也可以这么说:并不是只要使用 ...
- Java学习-006-三种数据库连接 MySQL、Oracle、sqlserver
此文主要讲述在初学 Java 时,常用的三种数据库 MySQL.Oracle.sqlserver 连接的源代码整理.希望能对初学 Java 编程的亲们有所帮助.若有不足之处,敬请大神指正,不胜感激!源 ...
- Oracle/Mysql/SqlServer函数区别
mysql日期和时间格式转换 Linux scp 使用详解 Oracle/Mysql/SqlServer函数区别 2011-07-01 12:34:36| 分类: Mysql技术 | 标签:mys ...
- oracle与sqlserver利用函数生成年月日加流水号
最近在做oracle相关的项目,刚接触oracle,与sqlserver语法上还是有区别的 sqlserver : 示例:FX+当前年月日+00001 如下图流水号实力所示 原理: 首先 'FX'是固 ...
随机推荐
- BI之SSAS完整实战教程3 -- 创建第一个多维数据集
上一篇我们已经完成了数据源的准备工作,现在我们就开始动手,创建第一个多维数据集(Cube). 文章提纲 使用多维数据集向导创建多维数据集 总结Cube设计器简介 维度细化 总结 一.使用向导创建多维数 ...
- 2. npm 的使用
NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种: 允许用户从NPM服务器下载别人编写的第三方包到本地使用. 允许用户从NPM服务器下载并 ...
- sql 随机抽取几条数据的方法 推荐
传说用这个语句管用:select top 5 * from tablename order by newid() 我放到sql的查询分析器里去执行果然管用,随机抽取5条信息,不停的换,结果我应用到程序 ...
- 状态压缩DP---Hie with the Pie
http: //acm.hust.edu.cn/vjudge/contest/view.action?cid=110044#problem/B Description The Pizazz Pizze ...
- xshell下载文件到本地/上传文件到服务器
xshell很好用,然后有时候想在windows和linux上传或下载某个文件,其实有个很简单的方法就是rz,sz首先你的Ubuntu需要安装rz.sz(如果没有安装请执行以下命令,安装完的请跳过.其 ...
- php学习笔记:foreach循环访问关联数组里的值
foreach循环可以将数组里的所有值都访问到,下面我们展示下,用foreach循环访问关联数组里的值. 例如: $fruit=array('apple'=>"苹果",'ba ...
- java LinkedBlockingQueue和ConcurrentLinkedQueue的区别
实现上看,两者都继承于AbstractQueue,但是ConcurrentLinkedQueue实现了Queue,而LinkedBlockingQueue实现了BlockingQueue,Blocki ...
- 求Mac 的adt插件!
搞了半天原来ADT Mac和win是通用的安装方法也相同! 自己配环境! 下载一个Eclipse,然后安装就行! dns:203.195.223.190 这个DNS可以连上谷歌的服务器(只限学习使用) ...
- winform(无边框窗体与timer)
一.无边框窗体 1.控制按钮如何制作就是放置可以点击的控件,不局限于使用按钮或是什么别的,只要放置的控件可以点击能触发点击事件就可以了 做的好看一点,就是鼠标移入(pictureBox1_MouseE ...
- 关于IE处理margin和padding值超出父元素高度的问题
两个div,父div有padding值,子div有margin-top值,浏览器在解析实际父子位置关系时,他们之间的距离是父padding+子margin-top.现在把父div设置固定高度,并有意让 ...