0
点赞
收藏
分享

微信扫一扫

Oracle与SqlServer的区别大吗?

janedaring 03-05 08:45 阅读 5

这篇文章主要介绍了Oracle与SqlServer的区别大吗,差异主要表现在数据类型区别、数据表个数查询的区别以及oracle区分表字段的大小写,SQL Server 不区分表字段的大小写,具体细节跟随小编一起学习下吧


目录
  • 前言
  • 1.数据类型区别
  • 2.数据表个数查询的区别
  • 3.实现查询
  • 4.oracle不能再表后面使用’as’ 表字段后面可以使用‘as’,SQL Server 可以再表后面和表字段后面都可以使用‘as’
  • 5.oracle区分表字段的大小写,SQL Server 不区分表字段的大小写
  • 6.时间的处理
  • 总结


前言

Oracle与SqlServer的差异


1.数据类型区别

oracle——sqlServer
CHAR(length)——CHAR(length):存储固定长度的字符串。参数length指定了长度,如果存储的字符串长度小于length,用空格填充。默认长度是1,最长不超过2000字节。

VARCHAR2(length)——VARCHAR(length)
VARCHAR2(length):存储可变长度的字符串。length指定了该字符串的最大长度。默认长度是1,最长不超过4000字符。

NUMBER(p,s)——decimal(18, 0)
NUMBER(p,s):既可以存储浮点数,也可以存储整数,p表示数字的最大位数(如果是小数包括整数部分和小数部分,p默认是38为),s是指小数位数。

DATE——DATETIME
DATE:存储日期和时间,存储纪元、4位年、月、日、时、分、秒,存储时间从公元前4712年1月1日到公元后4712年12月31日。

oracle
各种数据类型的表达形式:
字符型用单引号加字符表示,例如,’ABC’
数字型直接用阿拉伯数字表示,例如,123
日期型不能直接表示,必须使用函数转换,
例如,DATE’2016-12-31’,TO_DATE(’20161231201237’,’YYYYMMDD 24HH:MI:SS’)
各种数据类型的不同特点:
字符型可以进行拼接,
数字型可以进行算术运算,
日期型也能进行算术运算,但是只能日期减日期,或者日期加减数字
各种数据类型比较大小的方式:
字符型比较第一个字符的ASC码的大小
数字型比较数值的大小
日期型也是直接比较大小,越早的时间越小


2.数据表个数查询的区别

SQL Server

1

2

3

4

5

6


---查询数据库中表的个数

select * from sysobjects where type='U'

--查询某个类型表的个数

select * from sysobjects

where type='U'

and name like '%drugcost%'


Oracle

1

2

3

4


--查询数据库表的个数

select * from user_tables;

--查询某个类型表的个数

select * from user_tables where table_name like '%drugcost%';



3.实现查询

1

2

3

4

5

6

7

8

9


--sql server

select top 3 * from ODS_Fact_201201Incomedtl

--oracle

select * from (

SELECT row_number() over (order by "Id") as rn,

"Id", "Date", "Sign", "PatientNo", "itemid",

"AccountingId", "Deptid", "ExecDeptid", "Doctorid", "Amount", "Money"

FROM "ODS_Fact_201201Incomedtl" ) a

where rn <= 3;



4.oracle不能再表后面使用’as’ 表字段后面可以使用‘as’,SQL Server 可以再表后面和表字段后面都可以使用‘as’


5.oracle区分表字段的大小写,SQL Server 不区分表字段的大小写


6.时间的处理

1

2

3

4

5

6

7

8

9

10

11

12

13

14


--sql server

select YEAR(Date) as years,MONTH(Date) as months,sum(Money) as money

from ODS_Fact_201201Incomedtl a with(nolock)

left join ODS_Dim_Item b with(nolock) on a.itemid = b.id

where b.Item like '%挂号%'

group by YEAR(Date),MONTH(Date)

--oracle

select to_char(a."Date",'yyyy') as dateyears,

to_char(a."Date",'mm') as datemonths,

sum("Money") as Money

from "ODS_Fact_201201Incomedtl" a

left join "ODS_Dim_Item" b on a."itemid" = b."id"

where b."Item" like '%挂号%'

group by to_char(a."Date",'yyyy'),to_char(a."Date",'mm');



总结

本文仅仅简单介绍了Oracle与SqlServer的数据类型的差异。

举报

相关推荐

0 条评论