最近开始接触Oracle,想要了解下同SQL Server使用时的区别。搜寻网上信息找到具体区别分类如下:

一、数据类型比较

类型名称

Oracle

SQLServer

比较

 字符数据类型  CHAR  CHAR  都是固定长度字符资料但oracle里面最大度为2kb,SQLServer里面最大长度为8kb
 变长字符数据类型  VARCHAR2  VARCHAR  Oracle里面最大长度为4kb,SQLServer里面最大长度为8kb
 根据字符集而定的固定长度字符串  NCHAR  NCHAR  前者最大长度2kb后者最大长度4kb
 根据字符集而定的可变长度字符串  NVARCHAR2  NVARCHAR  二者最大长度都为4kb
 日期和时间数据类型  DATE  有Datetime和Smalldatetime两种  在oracle里面格式为DMY在SQLSerser里面可以调节,默认的为MDY
 数字类型  NUMBER(P,S)  NUMERIC[P(,S)]  Oracle里面p代表小数点左面的位数,s代表小数点右面的位数。而SQLServer里面p代表小数点左右两面的位数之和,s代表小数点右面的位数。
 数字类型  DECIMAL(P,S)  DECIMAL[P(,S)]  Oracle里面p代表小数点左面的位数,s代表小数点右面的位数。而SQLServer里面p代表小数点左右两面的位数之和,s代表小数点右面的位数。 
 整数类型  INTEGER  INT  同为整数类型,存储大小都为4个字节
 浮点数类型  FLOAT  FLOAT  
 实数类型  REAL  REAL  

二、普通函数比较

函数
ORACLE
SQLServer
比较
数学函数 ABS ABS 两者都是取绝对值函数格式都为abs(numeric_expression)
ASIN,ACOS,ATAN ASIN,ACOS,ATIN 用于计算反正弦,反余弦,反正切的值。参数为float类型的表达式,取值-1~1.
SIN,COS,TAN SIN,COS,TAN 用于计算正弦,余弦,正切的值。参数为float类型的表达式.
CEIL CELING 用于计算大于或等于指定值的最小整数,格式:~(numeric_expression)
  DEGREES 用于弧度对角度的转变,而RADIANS用于角度到弧度的转变,这两个函数都是SQLServer特有的。
EXP EXP 给定资料的指数值
FLOOR FLOOR 用于计算小于或等于、给定值的最大整数。
LOG LOG 用语求指定函数的自然对数,在SQLServer里面还有LOG10这个函数,用于求以10为底的对数值
POWER POWER 用于求指定表达式的给定次方,POWER(M,N)表示M的N次方。
ROUND ROUND 用于把表达式圆整到指定长度,在oracle里面还分数据型和日期型。两种
SIGN SIGN  
SQRT SQRT 用于求给定式子的平方根
字符串函数 || + 用于把两个或多个字符数据或列连接起来。Oracle里用||,SQLServer里用+。
ASCII ASCII 用于求最左端字符的ASCII值。
TO_CHAR CHAR 都是数据类型转换标识,前者主要是将日期、时间或数转换为文本。后者主要是将整形的ASCII数,转换成相对应的字符
  CHARINDEX 返回指定样式的起始位置
  DIFFERENCE  
LOWER LOWER 转换成小写字母。
LTRIM LTRIM 删除资料前面的空格,也就是左删除,还有与之对应的RTRIM,为右删除
SOUNDEX SOUNDEX 返回由4个字符组成的代码,以平估两个字符的相似性。
SUBSTR/SUBSTRB SUBSTRING 格式为~(string,a,b),返回以a位置开始的有b个字符长的string的一部分,oracle里面还有substrb函数,功能相同但是他里面的a,b是以字节为单位而不是以字符为单位。
UPPER UPPER 以大写形式返回string。
日期时间函数 SYSDATE GETDATE 返回当前的时间日期。
NEXT_DAY DATEADD 前者格式为NEXT_DAY(d,stirng)表示返回在日期d之后满足string给出条件的第一天。DATEADD格式为DATEADD(d,num,date)表示返回在日期d天之后加上num天后的日期,date表示返回的类型。
系统函数   COL_NAME 返回列名
VSIZE COL_LENGTH 返回列的长度
  DATELENGTH 返回任意数据类型表达式的实际长度,二者功能相近。

三、特殊规则比较

ORACLE
SQL SERVER
CURRVAL, NEXTVAL Use the identity column type, and @@identity global variable, IDENT_SEED() and IDENT_INCR() functions.
SYSDATE GETDATE()
ROWID Use the identity column type
USER USER
LIKE模糊查询%,_ , ^ LIKE模糊查询%,_ , ^

四、操作符比较

Operator Oracle Microsoft SQL Server
Equal to (=) Same
Greater than (>) Same
Less than (<) Same
Greater than or equal to (>=) Same
Less than or equal to (<=) Same
Not equal to (!=, <>,^=) Same
Not greater than, not less than N/A !> , !<
In any member in set IN Same
Not in any member in set NOT IN Same
Any value in set ANY, SOME Same
Referring to all values in set. != ALL, <> ALL, < ALL, > ALL, <= ALL, >= ALL Same
Like pattern LIKE Same
Not like pattern NOT LIKE Same
Value between x and y BETWEEN x AND y Same
Value not between NOT BETWEEN Same
Value exists EXISTS Same
Value does not exist NOT EXISTS Same
Value {is | is not} NULL IS NULL, IS NOT NULL Same. Also supports = NULL, != NULL for backward compatibility (not recommended).

五、ORACLE 与SQL SERVER间的转换。

  如需在Oracle 数据库与Sql Server 数据库之间进行转换需要做好以下工作:

  1)保证所有的 SELECT, INSERT, UPDATE, and DELETE 语句的语法是正确的,如果有什么不同需要做一定的更改。
  2)改变所有ORACLE中的 outer joins 为SQL SERVER支持的 SQL-92 standard outer join 标准。
  3)将Oracle functions 与SQL Server functions 进行转换。
  4)检查所有的操作符.。
  5)将ORACLE的“||” 字串连接操作符转换为SQL SERVER的 “+”字串连接操作符。
  6)将ORACLE的 PL/SQL 程序转换为SQL SERVER的TransactSQL 程序。
  7)修改所有的ORACLE的 PL/SQL 游标为没有游标的SELECT 语句或者是SQL SERVER的 TransactSQL 游标。
  8)将ORACLE的PL/SQL procedures, functions, and packages 与SQL SERVER的TransactSQL procedures进行转换。

  9)将ORACLE的 PL/SQL triggers与SQL SERVER的TransactSQL triggers进行转换。
  10)用 SET SHOWPLAN 语句来调整你的查询的性能。

Oracle 和SQL Server 中的SQL语句使用区别的更多相关文章

  1. SQL Server中的流控制语句

    begin···end 该语句定义sql代码块,通常在if和while语句中使用 declare @num int ; ; begin ; print 'hello word' end if···el ...

  2. SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别

    SQL Server 中 EXEC 与 SP_EXECUTESQL 的区别 MSSQL为我们提供了两种动态执行SQL语句的命令,分别是 EXEC 和 SP_EXECUTESQL ,我们先来看一下两种方 ...

  3. SQL Server中SCAN 和SEEK的区别

    SQL Server中SCAN 和SEEK的区别 SQL SERVER使用扫描(scan)和查找(seek)这两种算法从数据表和索引中读取数据.这两种算法构成了查询的基础,几乎无处不在.Scan会扫描 ...

  4. [转]SQL SERVER中openrowset与opendatasource的区别

    本文转自:http://blog.sina.com.cn/s/blog_6399df820102vyy8.html SQL SERVER中openrowset与opendatasource的区别: o ...

  5. SQL SERVER 中的smalldatetime和datetime区别

    原文:SQL SERVER 中的smalldatetime和datetime区别 smalldatetime不能到秒. 不過它占的空間小.(4位) datetime(8位) 而且兩者的時間範圍不一樣. ...

  6. SQL Server中的SQL语句优化与效率问题

    很多人不知道SQL语句在SQL SERVER中是如何执行的,他们担心自己所写的SQL语句会被SQL SERVER误解.比如: select * from table1 where name='zhan ...

  7. SQL Server中的SQL语句优化与效率

    很多人不知道SQL语句在SQL SERVER中是如何执行的,他们担心自己所写的SQL语句会被SQL SERVER误解.比如: select * from table1 where name='zhan ...

  8. SQL Server中执行Sql字符串,返回执行结果

    今天遇到一个问题:想把sql字符串在SQL Server 中执行了,并获取执行的结果 ); SET @tablename='select @table3 = count(1) from UserVis ...

  9. SQL Server中char与varchar数据类型区别

    在SQL Server中char类型的长度是不可变的,而varchar的长度是可变的 . 存入数据时: 如果数据类型为char时,当定义一个字段固定长度时,如果存进去数据长度小于char的长度,那么存 ...

随机推荐

  1. 沪江iKcamp出品微信小程序教学共5章16小节汇总(含视频)

  2. 利用GitHub制作在线炫酷简历

    首先我们先体验一下炫酷简历.然后决定我们要不要使用. https://jessezhao1990.github.... 如何使用本项目部署你自己的在线简历 1. 书写简历 在src文件夹里面有个con ...

  3. 对HTML语义化的一些理解和记录

    什么是HTML语义化 说HTML语义化就要先说说HTML到底负责的什么?下面摘自维基百科: 超文本标记语言(英语:HyperText Markup Language,简称:HTML)是一种用于创建网页 ...

  4. JZOJ 3929. 【NOIP2014模拟11.6】创世纪

    3929. [NOIP2014模拟11.6]创世纪 (Standard IO) Time Limits: 1000 ms Memory Limits: 65536 KB Description 上帝手 ...

  5. Android模拟器不能上网的解决方法

    我原来一直不用Android的模拟器,因为这东西的多年前的印象真的是很糟糕——启动半个小时,不支持OpenGL.即使后来有了x86镜像,在HAXM的支持下快的飞起,也不想用,因为NDK还要编译x86的 ...

  6. 『配置』服务器搭建 Office Online Server2016 实现文档预览 番外 错误篇

    安装一个或多个角色.角色服务或功能失败.找不到源文件.请再次尝试在新的“添加角色和功能”向导会话中安装角色.角色服务或功能,然后在向导的“确认”页中单击“指定备用源路径”以指定安装所需的源文件的有效位 ...

  7. 基于linux下的NIST数字测试包安装过程

    基于linux下的NIST数字测试包安装过程 1. 首先解决windows文件不能粘贴到Ubuntu的问题 选择利用VMware Tools进行解决 打开虚拟机VMware Workstation,启 ...

  8. 原来rollup这么简单之 rollup.rollup篇

    大家好,我是小雨小雨,致力于分享有趣的.实用的技术文章. 内容分为翻译和原创,如果有问题,欢迎随时评论或私信,希望和大家一起进步. 分享不易,希望能够得到大家的支持和关注. 计划 rollup系列打算 ...

  9. Python 执行 javascript PyExecJS 模块

    PyExecJS 安装 pip install PyExecJS PyExecJS 的基本使用: >>> import execjs >>> execjs.eval ...

  10. php7连接mysql8

    最近因为剁手买了mac所以在mac上搭建lnmp环境. 刚好看到mysql从5.7跳到8,性能据说快上一倍,果断尝鲜! lnmp基本都弄好了,但是到用php连接Mysql这一步出了岔子. 出错原因: ...