簡體   English   中英

SQL中的舍入函數刪除.00

[英]Round function in SQL remove .00

我想用2個小數位舍入任何浮點值,而小數點后有值,如果小數點后沒有類似(.00)的值,那么此時將不會顯示.00

請參考此代碼

  Declare @num float
  Set @num = 123.23252
  --1. Result 123.23
  select CAST(ROUND(@num,2) as numeric(18,2))
  Set @num = 253.000012
  --2. Result 253.00
  select CAST(ROUND(@num,2) as numeric(18,2))

我需要第一個結果是好的,但是在第二個結果中,我只需要253(不包括.00)。 這兩個功能我想成為相同的功能或方法,因為我們不知道@num何時具有123.23或253.000012。

請讓我知道簡單且優化的解決方案。

嘗試這個:

Declare @num float
  Set @num = 123.23252
  --1. Result 123.23
  select CAST(ROUND(@num,2) as numeric(18,2))
  Set @num = 253.000012
  --2. Result 253.00

這樣的用例:

    select 
    CASE 
        WHEN RIGHT(CAST(ROUND(@num,2) as numeric(18,2)),2)='00' THEN ROUND(@num,2) 
        ELSE CAST(ROUND(@num,2) as numeric(18,2)) 
    END

或對SQL Server 2012使用IFF:

 select IFF(RIGHT(CAST(ROUND(@num,2) as numeric(18,2)),2)='00'
      , ROUND(@num,2), CAST(ROUND(@num,2) as numeric(18,2)) 

您可以使用格式來執行此操作(SQL SERVER 2012+)

    Set @num = 253.000012
  select FORMAT(CAST(ROUND(@num,2) as numeric(18,2)) , 'g15')
    --3. Result 253.00

        Set @num = 253.3000012
  select FORMAT(CAST(ROUND(@num,2) as numeric(18,2)) , 'g15')
    --4. Result 253.3

數據的呈現應該由客戶端而不是數據庫來完成,但是如果您堅持,只需將浮點數四舍五入並保持為浮點數即可:

declare @num1 float = 123.23252;
declare @num2 float = 253.000012;

select ROUND(@num1,2), ROUND(@num2,2)

結果

123.23  253

暫無
暫無

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

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