麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 數據庫 > SQL Server > 正文

sqlserver四舍五入使用round函數及cast和convert函數

2024-08-31 01:03:22
字體:
來源:轉載
供稿:網友

引言

      今天和測試溝通一個百分比計算方式時遇到一個問題, 我在存儲過程里用到了強轉CAST(32.678 AS DECIMAL(5,1))  我認為該方式只會保留一位小數,我給測試的回復是我并沒有用到四舍五入函數,數據也沒有四舍五入,而測試說他們自己驗證后覺的數據是經過四舍五入了的。 想到這里于是我再試了試存儲過程的每個計算點,才發現了這個問題。

ROUND

     那么用到四舍五入并且保留小數點時我們肯定會首選ROUND函數,  如果字段的數據類型是decimal(18,10)時那么四舍五入后還會有很多0出現。

CAST和CONVERT

    其實我使用強轉時并沒有打算四舍五入結果,只是單純為了得到符合我要求的數據,今天才發現這兩個強轉也會四舍五入結果,也就是說下面三個語句將會返回相同的結果值

select ROUND(32.678,1) --32.700select CAST(32.678 as DECIMAL(5,1)) --32.7select convert(NUMERIC(5,1),32.678) --32.7

下面抽個空給大家介紹SQL的四舍五入ROUND函數

SQL四舍五入2007/11/01 16:35問題1:

SELECT CAST('123.456' as decimal)

將會得到 123(小數點后面的將會被省略掉)。

如果希望得到小數點后面的兩位。

則需要把上面的改為

SELECT CAST('123.456' as decimal(38, 2)) ===>123.46

自動四舍五入了!

問題2:

SELECT ROUND(123.75633, 2, 1), ROUND(123.75633, 2)

上面的SQL得到的2個值是不一樣的,前一個是:123.75000,后一個是:123.76000。

因為前者在進行四舍五入之前,小數點后已經被截取,保留了2位。

而后者則沒有被截取,四舍五入時自然就會得到123.76000

ROUND

返回數字表達式并四舍五入為指定的長度或精度。

語法

ROUND ( numeric_e-xpression , length [ , function ] )

參數

numeric_e-xpression

精確數字或近似數字數據類型類別的表達式(bit 數據類型除外)。

length

是 numeric_e-xpression 將要四舍五入的精度。length 必須是 tinyint、smallint 或int。當 length 為正數時,numeric_e-xpression 四舍五入為 length 所指定的小數位數。當 length 為負數時,numeric_e-xpression 則按 length 所指定的在小數點的左邊四舍五入。

function

是要執行的操作類型。function 必須是 tinyint、smallint 或 int。如果省略 function 或 function 的值為 0(默認),numeric_e-xpression 將四舍五入。當指定 0 以外的值時,將截斷 numeric_e-xpression。

返回類型

返回與 numeric_e-xpression 相同的類型。

注釋

ROUND 始終返回一個值。如果 length 是負數且大于小數點前的數字個數,ROUND 將返回 0。

示例 結果

ROUND(748.58, -4) 0

當 length 是負數時,無論什么數據類型,ROUND 都將返回一個四舍五入的 numeric_e-xpression。

示例 結果

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

示例

A. 使用 ROUND 和估計值

下例顯示兩個表達式,說明使用 ROUND 函數且最后一個數字始終是估計值。

Select ROUND(123.9994, 3), ROUND(123.9995, 3) GO

下面是結果集:

----------- -----------
123.9990    124.0000 

B. 使用 ROUND 和四舍五入的近似值

下例顯示四舍五入和近似值。

語句 結果

Select ROUND(123.4545, 2)
123.4500
Select ROUND(123.45, -2)
100.00

C. 使用 ROUND 截斷

下例使用兩個 Select 語句說明四舍五入和截斷之間的區別。第一個語句四舍五入結果。第二個語句截斷結果。

語句 結果

Select ROUND(150.75, 0)151.00Select ROUND(150.75, 0, 1)150.00

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亚洲成人免费视频在线 | 成人毛片免费视频 | 久久久国产精品网站 | 久久久久国产成人免费精品免费 | 奇米888一区二区三区 | 亚洲最大的成人网 | 久久影院国产精品 | 黄色片免费看看 | 久久成人在线观看 | 国产精品成aⅴ人片在线观看 | 国产色片| 国产精品久久久久影院老司 | 19禁国产精品福利视频 | 91成人在线免费视频 | av日韩在线免费观看 | 青青青在线免费 | 在线观看免费污视频 | 国产精品免费久久久久久 | 国产一区二区在线观看视频 | 钻石午夜影院 | 九九视频精品在线观看 | 国产免费观看一区二区三区 | 91午夜少妇三级全黄 | 欧美a久久 | 免费毛片随便看 | 久久久久久久久免费 | 中文字幕在线播放一区 | v天堂在线视频 | 黄网站免费观看视频 | 黄色伊人网站 | 极品销魂一区二区三区 | 色视频欧美 | 插插操| 最新福利在线 | 国产亚洲精品久久久久久网站 | 欧洲精品久久久久69精品 | 色97在线| 91九色国产视频 | 亚洲欧美一区二区三区在线观看 | 一色屋任你操 | 高清国产午夜精品久久久久久 |