2012-07-04

[DB]Oracle / MySQL / SQLServer 常見function區別

1.類型轉換
--Oracle
select to_number('123') from dual; --123; 
select to_char(33) from dual;  --33;
select to_date('2004-11-27','yyyy/mm/dd') from dual;--2004-11-27

--Mysql
select cast('123' as signed integer); --123 
select cast(33 as char(2));  --33;
select to_days('2000-01-01');  --730485

--SqlServer 
select cast('123' as decimal(30,2)); --123.00
select cast(33 as char(2));  --33;
select convert(varchar(12) , getdate(), 120)

2.四捨五入
--Oracle
select round(12.86*10)/10 from dual;    --12.9

--Mysql
select format(12.89,1);   --12.9 

--SqlServer
select round(12.89,1);   --12.9 

3.日期時間
--Oracle
select sysdate from dual;  --日期時間 

--Mysql
select sysdate();   --日期時間 
select current_date();   --日期

--SqlServer
select getdate();   --日期時間
select datediff(day,'2010-01-01',cast(getdate() as varchar(10)));--日期相差天數

4.Decode
--Oracle 
select decode(sign(12),1,1,0,0,-1) from dual;--1 

--Mysql/SqlServer 
select case when sign(12)=1 then 1 when sign(12)=0 then 0 else -1 end;--1

5.判斷null
--Oracle
select nvl(1,0) from dual;  --1 

--Mysql
select ifnull(1,0);   --1 

--SqlServer
select isnull(1,0);   --1 

6.字串相接
--Oracle
select '1'||'2' from dual;  --12
select concat('1','2');   --12

--Mysql
select concat('1','2');   --12

--SqlServer
select '1'+'2';    --12

7.筆數限制
--Oracle
select 1 from dual where rownum <= 10;

--Mysql
select 1 from dual limit 10;

--SqlServer
select top 10 1

8.字串截取
--Oracle
select substr('12345',1,3) from dual;

--Mysql/SqlServer
select substring('12345',1,3);

9.把多行轉換成一合併列
--Oracle
select wm_concat(列名) from dual; --多行記錄轉換成一列之間用,分割

--Mysql/SqlServer
select group_concat(列名);

10.利用SELECT結果來CREATE TABLE
--Oracle
CREATE TABLE dept_bak AS SELECT * FROM dept;

--Mysql/SqlServer
SELECT * INOT t1 FROM titles


來源:藍色的博客

沒有留言:

張貼留言