返回 登录
0

SQL Server和Oracle之间数据类型的区别

最近有一些在线谈论关于如何将SQL Server进程数据类型转换成Oracle类型的方法。对此,我想理清他们之间的一些混淆部分。

当连接一个数(如INT)到一个字符串中(比如VARCHAR),你在SQL Server会得到一个错误消息,但在Oracle上没有错误消息。造成这种差异的原因是由于两个平台数据类型优先级的差异。在SQL Server数据库引擎中,试图将VARCHAR值转换为一个INT值,因为这是智力较高的数据类型转换。Oracle在另一方面,当连接一个数字(数字)到字符串(如VARCHAR2),将不会有一条错误消息,因为它是将数字转换成一个字符串,然后连接字符串值。

如果你创建一个数字类型表,并使用一个字符串值在WHERE子句中,那么两个平台将抛出一个错误,原因是由于数据类型不匹配。

我也看到一些问题关于为什么SQL Server有很多数值数据类型,而Oracle只有一个。在SQL Server中具有不同数据类型有助于优化数据的存储,并且更容易预测你必须需要存储的表(假设在任何情况下不压缩)。Oracle需要16位的值(记住数据存储在二进制中,而不是实际数字)(假设值不是零,比如100000或1000000000等,这些值只需要两个字节的存储空间)。在SQL Server中,所需的空间取决于数据类型的大小,TINYINT采用1个字节,SMALLINT采用2字节,等等。

随着数据压缩存储两个平台的变化,允许使用更少的空间来存储数字。然而,在SQL Server数据压缩需要企业版和Oracle高级压缩需要企业版以及购买先进的压缩功能。

原文:Differences between data types between SQL Server and Oracle


2016年5月13日-15日,由CSDN重磅打造的2016中国云计算技术大会(CCTC 2016)将于5月13日-15日在北京举办,今年大会特设“中国Spark技术峰会”、“Container技术峰会”、“OpenStack技术峰会”、“大数据核心技术与应用实战峰会”四大技术主题峰会,以及“云计算核心技术架构”、“云计算平台构建与实践”等专场技术论坛。大会讲师阵容囊括Intel、微软、IBM、AWS、Hortonworks、Databricks、Elastic、百度、阿里、腾讯、华为、乐视、京东、小米、微博、迅雷、国家电网、中国移动、长安汽车、广发证券、民生银行、国家超级计算广州中心等60+顶级技术讲师,CCTC必将是中国云计算技术开发者的顶级盛会。目前会议门票限时7折(截止至4月29日24点),详情访问CCTC 2016官网

评论