如何提取double的小数位数

时间:2019-04-21 16:06:26

标签: sql sql-server

我需要在SQL中扩展double的小数部分,但不包含“ 0”。例如: 数:5.67 整数:5 事实:67

3 个答案:

答案 0 :(得分:1)

在大多数数据库中,您可以使用类似以下的内容:

select cast((x - floor(x)) * 100 as int)

在SQL Server中,您还有其他选择。例如,要获取小数部分,可以使用%

select (x % 1)

要获取两位数:

select floor(100 * (x % 1)) -- or perhaps round()

或:

select (x * 100) % 100

答案 1 :(得分:0)

SELECT 5.67 AS Doubles, CAST(5.67  AS INT) AS Fractional_Only, 
PARSENAME(5.67,1) AS DECIMAL_ONLY  

答案 2 :(得分:-1)

这将在oracle中工作:

select substr(to_char(5.67),instr(to_char(5.67),'.')+1) from dual;

检查http://sqlfiddle.com/#!4/e2ac5e/1074

对于mssql:

select substring(CONVERT(varchar, 25.65),CHARINDEX('.', CONVERT(varchar, 25.65))+1,5);

http://sqlfiddle.com/#!18/9eecb/41866

检查最后一个:

select substring(CONVERT(varchar, (15+15)/2.0),
                 CHARINDEX('.', CONVERT(varchar, (15+15)/2.0))+1,1);

http://sqlfiddle.com/#!18/9eecb/41875