作者:admin 日期:2023-10-17 浏览: 次
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高级压缩需要企业版以及购买先进的压缩功能。