[英]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.