1、数据库差异
SqlServer可拥有多个数据库;自带可视管理工具SQL Server Management Studio。
Oracle只有一个数据库,但可以创建多个用户;只有SqlPlus,需额外安装PL/SQL Developer。
2、字段差异
数值
numeric(m,n):m表示有效数字的总位数(最大为38位),n表示小 数位数。 --SqlServer
number(m,n):m表示有效数字的总位数(最大为38位),n表示小 数位数。 --Oracle
字符串
nvarchar(n) --SqlServer
varchar2(n) --Oracle
大文本
nvarchar(max) 存储,32位SQL Server上其最大长度为2GB --SqlServer
clob 字符型大型对象(Character Large Object),最大容量为4GB --Oracle
3、创建临时表
分为会话级临时表和事务级临时表
会话,即session,当你使用工具如sqlplus或者toad执行连接,连接到某个数据库的时候,就开启了一个会话,直到你关闭这次连接,这个会话才算结束。
事务,即transaction,是一个由多条SQL语句组成的工作逻辑单元,这些语句要么全部执行成功,要么全部不执行。只有commit,rollback,或者关闭工具的情况下,事务才会结束。当一个事务结束之后,下一个可执行的SQL语句自动开启一个新的事务。
(1)基于会话的全局临时表特征:基于会话的全局临时表则是session链接退出后,临时记录自动删除,无需手动去操作,针对不同session访问全局临时表,看到的结果是不同。
(2)基于事务的全局临时表在commit或者session链接退出后,临时表记录自动删除。
创建会话级临时表
保留行
CREATE Global Temporary TABLE TableName ON COMMIT PRESERVE ROWS AS
SELECT ...
创建事务级临时表
CREATE Global Temporary TABLE TableName ON COMMIT DELETE ROWS AS
SELECT ...
4、不支持IIF函数
可使用decode函数或者Case When代替
SUM(IIF(BHYY = '41', 1, 0)) --Sqlserver
SUM(decode(BHYY ,'41', 1, 0)) --Oracle
SUM(case when BHYY = '41' then 1 else 0 end) --Oracle
5、ltrim支持指定字符
SqlServer中ltrim函数只支持去除空格
Oracle中ltrim函数可指定字符