sql Server與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)

--發現錯誤請指出,望各位不吝賜教!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM