使用sql从数字中拆分小数位

时间:2019-07-03 20:38:06

标签: sql sql-server

我在表1中有一个字段

In_Stock
5.083

如何将以上值吐入

Carton   Loose
5        0.083

使用MS Sql

5 个答案:

答案 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

Demo

答案 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

示例:http://sqlfiddle.com/#!18/e5130/6