我擁有的是:1.88或者2.488我想要的是1.8和2.4
所以基本上,我只想要小數的第一位,但不四舍五入。
我嘗試使用,floor但它只給了我沒有小數的數字。我在互聯網上找到了一些解決方案,但每個解決方案都是數字。
uj5u.com熱心網友回復:
你可以使用這個:
sELECT CAST (ROUND(2.488888 , 1, 1) AS decimal(18,1))

sELECT CAST (ROUND(2.4999999 , 1, 1) AS decimal(18,1))

uj5u.com熱心網友回復:
使用帶有第三個引數的 Round() 函式。
回合(1.88, 2 ,1)
這個函式有以下引數。
ROUND(數字,小數,運算)
- 號碼 必填。要四舍五入的數字
- 小數 必填。將數字四舍五入到的小數位數
- 操作 可選。如果為 0,則將結果四舍五入到小數位數。如果其他值不是 0,則將結果截斷為小數位數。默認值為 0
W3School 上的相關鏈接:-鏈接
uj5u.com熱心網友回復:
您可以通過幾種不同的方式解決這個問題。您可以轉換為字符資料或進行一些整數數學運算。
declare @Nums table
(
SomeNumber decimal(7,4)
)
insert @Nums
select 1.88 union all select 2.488
select *
, left(SomeNumber, charindex('.', convert(varchar(10), SomeNumber)) 1)
, convert(decimal(7,1), convert(int, SomeNumber * 10) / 10.0)
from @Nums
uj5u.com熱心網友回復:
..小提琴..
select {fn truncate(val, 1)}
from
(
values(1.88), (2.488)
) as v(val)
uj5u.com熱心網友回復:
只是各種有趣和咯咯笑的方法的測驗片段。
declare @test table (id int identity(1,1), num decimal(18,2)); insert into @test (num) values (1.44), (1.88); select num , convert(decimal(18,1), round(num,1,1)) as rounded , cast({fn truncate(num, 1)} as decimal(18,1)) as truncated , convert(decimal(18,1), stuff(num,len(num),1,'')) as stuffed , convert(decimal(18,1), left(num,len(num)-1)) as lefted , convert(decimal(18,1), num-num%0.1) as modulusced , convert(decimal(18,1), floor(num*10)/10) as floored from @test; GO數量 | 圓角| 截斷 | 塞| 離開 | 模數| 地板 ---: | ------: | --------: | ------: | -----: | ---------: | ------: 1.44 | 1.4 | 1.4 | 1.4 | 1.4 | 1.4 | 1.4 1.88 | 1.8 | 1.8 | 1.8 | 1.8 | 1.8 | 1.8
db<>在這里擺弄
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/358094.html
標籤:sql sql-server
上一篇:SQL將組的所有值添加為新值
下一篇:如何從未確定的組中獲取第一個值
