作者: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高級壓縮需要企業版以及購買先進的壓縮功能。