簡體   English   中英

SQl中的舍入函數

[英]Round Function in SQl

選擇舍入((10 * 100)/ 115,0)

結果:8

但結果是8.69

但我想顯示9

我也在下面的查詢中嘗試過,但是結果是一樣的。

選擇舍入((10 * 100)/ 115,0)

請解決我的問題。

謝謝

試試下面

declare @n decimal(4,1)
select @n = 8.69

select case when PARSENAME(@n,1)>=5 then ceiling(@n) else floor(@n) end 

想法是如果點后的數字大於5,則轉到較高的值,否則轉到較低的一個

如果您的數據庫是oracle,則可以使用以下功能。

結果9使用ceil函數,結果8使用floor函數

select ceil(8.69) val from dual;

  select floor(8.69) val from dual;

對於較高的值,您可以使用Ceil函數,對於較低的值,您可以在oracle中使用floor函數,如下所示

select ceil(8.69) Upper_val,floor(8.69) Lower_val from dual;

它返回一個整數。 嘗試在計算之前將其轉換為小數

例如。

select Round((10*100)/115,0)

改成

select Round((10.0*100)/115,0)

希望這會有所幫助

如果其SQL Server請嘗試這樣做:

SELECT CEILING(10.1) AS UpperValue, FLOOR(10.6) AS LowerValue, 
Round(CAST((CAST(10 AS float) * CAST(100 AS float)) / CAST(115 AS float) AS float), 0)
AS YourValue, Round((10*100)/115,0) AS YourOldValue;

這是正在發生的事情:

甚至在使用ROUND函數之前

SELECT 1000/115 /* the result is 8 */

並嘗試這個

SELECT ROUND(1000.0/15, 0) /* the result is 9.000000 */

如果使用這個

SELECT CEILING(1000.0/115) /* the result is 9 */

所以基本上在調用任何函數之前,結果是8。

您可以使用此:

SELECT ROUND(CONVERT(decimal, 1000) / 115, 0)

或者只是這樣:

SELECT ROUND(1000.0/15, 0)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM