2009-07-02 66 views
0

十進制值我有一個表達:如何截斷SQL Server 2000中

Select (2345789 * 39.456)/100 

輸出是925554.5078400

我想顯示925554.50即小數點後的2個值。

如果我使用圓形

Select round((2345789 * 39.456)/100, 1) 

輸出爲925554.5000000。但是我想在小數點後兩位數。怎麼做?

回答

5

說明明顯,但925554.5000000和925554.50是相同的數字。

如果你想顯示這個數字有兩位小數,那麼這是你的UI代碼,而不是你的數據庫的問題。

說了這麼多,如果你必須做到這一點在數據庫本身然後嘗試類似:

-- 1 decimal place 
SELECT CAST(ROUND(@yourNumber, 1, 1) AS DECIMAL(18, 1)) 

-- 2 decimal places 
SELECT CAST(ROUND(@yourNumber, 2, 1) AS DECIMAL(18, 2)) 

-- 3 decimal places 
SELECT CAST(ROUND(@yourNumber, 3, 1) AS DECIMAL(18, 3)) 

-- 4 decimal places 
SELECT CAST(ROUND(@yourNumber, 4, 1) AS DECIMAL(18, 4)) 
+0

不,它不應該四捨五入。如果我給SELECT CAST(((2345789 * 39.456)/ 100)作爲十進制(18,3)),我期望得到輸出爲 925554.507而不是925554.508。 如果我使用SELECT CAST(ROUND((2345789 * 39.456)/ 100,1)AS DECIMAL(18,2)),則輸出爲925554.500。 另外,可能是我給出的例子,這裏是.50,但如果它說的是1.23498567,那麼我需要1.23而不是1.20。 希望你明白。 – 2009-07-02 10:54:43

0

嘗試(未測試):

SELECT CAST(number as decimal(18,2)) 
+0

如果我給SELECT CAST(((2345789 * 39.456)/ 100)爲十進制(18,2)),則wroking不錯,但它太四捨五入。 我得到925554.51而不是925554.50 – 2009-07-02 10:46:25

1

我有解決方案還採用截斷值

Select (2345789 * 39.456)/100 result-925554.5078400 
select cast (ROUND((2345789 * 39.456)/100 ,2,1)as decimal(18,2)) result-925554.50 
select cast (ROUND((2345789 * 39.456)/100 ,3,2)as decimal(18,3)) result-925554.507 
select cast (ROUND((2345789 * 39.456)/100 ,4,3)as decimal(18,4)) result-925554.5078 

確定。我希望你從中明白。

0

參見:

select ROUND(12345.67890,-4) --result: 10000.00000 
select ROUND(12345.67890,-3) --result: 12000.00000 
select ROUND(12345.67890,-2) --result: 12300.00000 
select ROUND(12345.67890,-1) --result: 12350.00000 
select ROUND(12345.67890,0) --result: 12346.00000 
select ROUND(12345.67890,1) --result: 12345.70000 
select ROUND(12345.67890,2) --result: 12345.68000 
select ROUND(12345.67890,3) --result: 12345.67900 
select ROUND(12345.67890,4) --result: 12345.67890 

select ROUND(12345.67890,-4,1) --result: 10000.00000 
select ROUND(12345.67890,-3,1) --result: 12000.00000 
select ROUND(12345.67890,-2,1) --result: 12300.00000 
select ROUND(12345.67890,-1,1) --result: 12340.00000 
select ROUND(12345.67890,0,1) --result: 12345.00000 
select ROUND(12345.67890,1,1) --result: 12345.60000 
select ROUND(12345.67890,2,1) --result: 12345.67000 
select ROUND(12345.67890,3,1) --result: 12345.67800 
select ROUND(12345.67890,4,1) --result: 12345.67890 


您可以使用:

select ROUND(12345.67890,1) --result: 12345.70000 

或者:

select ROUND(12345.67890,1,0) --result: 12345.70000 


注: ROUND(數值_表達式,長度[,函數])

數值_

是對精確數值或近似數字數據類型類別的表達式,除了位數據類型。

長度

是,其數值_要被倒圓的精度。長度必須是tinyint,smallint或int類型的表達式。當長度爲正數時,numeric_expression將四捨五入爲長度指定的小數位數。當長度爲負數時,numeric_expression會在小數點左側進行四捨五入,如長度所指定。

功能

是操作的執行類型。函數必須是tinyint,smallint或int。當省略函數或值爲0(默認值)時,numeric_expression將被舍入。如果指定的值不是0,則numeric_expression將被截斷。

參考:http://technet.microsoft.com/pt-br/library/ms175003.aspx