1. 程式人生 > >sql中的round函式和cast函式詳解

sql中的round函式和cast函式詳解

 <一>:ROUND函式主要返回數字表達式並四捨五入為指定的長度或精度。

語法格式如下:

ROUND(numeric_expression,length[,function])

引數說明:

1.numeric_expression:精確數字或近擬數字資料型別類別的表示式。

注意:bit資料型別除外。

2.length:是numeric_wxpression 將要四捨五入的精度。length必須是tinyint,smallint,或int.當length為正數時,numeric_expression四捨五入為lengthrn所指定的小數位數。當length為負數時,numeric_expression則按length所指定的在小數點的左邊四捨五入。

3.function: 是要執行的打操作型別。

(1).ROUND(四捨五入)函式始終返回一個值。如果length是負數且大於小數點前的數字個數,ROUND將返回0.如下面的例子的返回值就為0:     ROUND(748.55,-4)

(2).當length是負數時,且不大於小數點前的數字個數,無論什麼資料型別,ROUND函式都將返回一個四會五入的numeric_expression,如下例子所示:

ROUND(748.58,-1)=750.00          ROUND(748.58,-2)=700.00      ROUND(748.58,-3)=1000.00

(3)當length為正數時,ROUND函式的運算結果如下例子所示:

ROUND(123.4545,2)=123.4500    ROUND(123.4545,1)=123.5000      ROUND(123.4545,3)=123.4550

(4)使用ROUND函式截斷。如下例子所示:

ROUND(150.75,0)=151.00       ROUND(1502.75,0,1)=1502.00

<二>:CAST函式:它具有和C0NVERT函式相似的功能。即將某種資料型別的表示式顯式轉換為另一種資料型別。

語法形式:CAST(expression as data_type)

引數說明:

1.expression:該引數是任何有效的SQL表示式。

2.as:用於分隔兩個引數,在as之前的是要處理的資料,在as之後的是要轉換的資料型別。

3.data_type:目標系統所提供的資料型別,包括bigint和sql_variant.不能使用使用者自定義的資料型別。

顯式轉換使用 CAST 或 CONVERT 函式。
CAST 和 CONVERT 函式將數值從一個數據型別(區域性變數、列或其它表示式)轉換到另一個數據型別。例如,下面的 CAST 函式將數值 $157.27 轉換成字串 ''$157.27'':CAST ( $157.27 AS VARCHAR(10) )
CAST 函式基於 SQL-92 標準並且優先於 CONVERT。

當從一個 SQL Server 物件的資料型別向另一個轉換時,一些隱性和顯式資料型別轉換是不支援的。例如,nchar 數值根本就不能被轉換成 image 數值。nchar 只能顯式地轉換成 binary,隱性地轉換到 binary 是不支援的。nchar 可以顯式地或者隱性地轉換成 nvarchar。

當處理 sql_variant 資料型別時,SQL Server 支援將具有其它資料型別的物件隱性轉換成 sql_variant 型別。然而,SQL Server 並不支援從 sql_variant 資料隱性地轉換到其它資料型別的物件。