我在表1中有一个字段
In_Stock
5.083
如何将以上值吐入
Carton Loose
5 0.083
使用MS Sql
答案 0 :(得分:0)
您可以在SQL Server中使用FLOOR()来完成此操作:
SELECT 5.083 AS val,
FLOOR(5.083) AS rounded_down,
5.083-FLOOR(5.083) AS diff_between_two
答案 1 :(得分:0)
这是另一种方法:
DECLARE @test decimal(4,3) = 5.083
SELECT @test original
, CONVERT(INT, @test) Carton
, @test - CONVERT(INT, @test) Loose
答案 2 :(得分:0)
您可以将left()
函数与charindex()
一起使用:
with t as
(
select 5.083 as nr
)
select left(nr,charindex('.',nr)-1) as Carton,
nr - left(nr,charindex('.',nr)-1) as Loose
from t;
Carton Loose
5 0.083
答案 3 :(得分:0)
为此,SQL Server具有内置功能floor()
和%
:
select floor(field) as integer_portion, field % 1 as fractional_portion
from (values (5.083)) v(field)
这适用于任何数字类型。
如果数字为负,则可能要检查这是否符合您的实际需求。
答案 4 :(得分:-1)
可选地ROUND()
:
SELECT ROUND(in_stock, 0),
in_stock - Round(in_stock, 0)
FROM inventory
示例:http://sqlfiddle.com/#!18/e5130/4
真的有很多方法可以解决这个问题。例如,您可以使用模数1:
SELECT ROUND(in_stock, 0),
in_stock % 1
FROM inventory