Sql与Oracle的差异

/*整理背景201403订单中心数据库迁移(整理Oracle与SQL的差异)
整理规则第一句为SQL Server 第二句为Oracle*/
--数据类型
int integer
varchar varchar2
double number(25,10)
datetime date
/*
--临时表
ORACLE 数据库在使用临时表时,要先将临时表建到数据库中,然后才能使用临时表。
*/

/*
--多条语句同时放在一起执行时
begin
语句1;
语句2;
语句3;
。;。;。;
end;
*/
/*
非常有用的函数
floor(参数) 去除小数点后的所有小数位
coalesce(参数1,参数2,参数3,参数4) 返回第一个不为null的值,若都为null则返回null
-->ORACLE LPAD(参数,长度,填充值) 向左填充 RPAD(参数,长度,填充值) 向右填充
*/

--字符串拼接语法
select 'a'+'b';
select 'a'||'b' from dual;
--查询第一条数据
select top 1 from Table1;
select * from Table1 where rownum<2;
--查询一个字段如果是空则替换默认值
select ISNULL('字段1',0) from Table1;
select nvl('字段1',0) from Table1;
--截取字符串
select SUBSTRING('字段1','开始位置','截取长度') from Table1;
select SUBSTR('字段1','开始位置','截取长度') from Table1;
--去字段值的长度
select len('字段1') from Table1;
select length('字段1') from Table1;
--数据类型转换
select CONVERT('字段1',datatype) from Table1;select CAST('字段1' as dataType) from Table1;
select CAST('字段1' as dataTye) from Table1;
--注:在数据类型转换过程中cast语法select cast(1.2 as int) select cast(1.6 as int)这两个结果在sql server中
--为1 oracle中结果为1,2使用过程中一定要注意
--左右截取
select left('123',2)-->12
select right('123',2)-->23
--ORACLE中没有左右截取,实现同样的效果用SUBSTR。

--Update语句的区别(多表联合更新)
--注:单张表更新SQL与ORACLE一样
update Table1 set 字段1='value1',字段2='value2'
from Table2,Table1
where Table2.字段1=Table1.字段1 and Table2.字段2=Table1.字段2

MERGE INTO Table1
USING Tabel2
ON(Table2.字段1=Table1.字段1 and Table2.字段2=Table1.字段2)
WHEN MATCHED THEN UPDATE SET
字段1='value1',字段2='value2'

UPDATE Table1 set 字段1='value1' where exists
(select 1 from Table2 
where Table1.字段2=Table2.字段2 
and Table1.字段2='字段2')
--Delete语句
--注:单张表的删除语句SQL与ORACLE一样
Delete from Table1,Table2 where 
Table2.字段1=Table1.字段1 and Table2.字段2=Table1.字段2

Delete from Table1 where exists
(select 1 from Table2 
where Table2.字段1=Table1.字段1 
and Table2.字段2=Table1.字段2)

转载自:https://www.cnblogs.com/cwgyn/p/3619868.html

原文地址:https://www.cnblogs.com/daran/p/10939347.html