获得多项整数部分(Get integer part of number)

2019-07-03 10:52发布

所以,我有小数的数字的一张桌子,说

id    value
2323   2.43
4954  63.98

我想获得

id    value
2323      2
4954     63

是否有在T-SQL一个简单的函数来做到这一点?

Answer 1:

SELECT FLOOR(value)

http://msdn.microsoft.com/en-us/library/ms178531.aspx

FLOOR返回小于或等于指定的数值表达式的最大整数。



Answer 2:

假设你是小数部分的截断OK,你可以这样做: SELECT Id, CAST(value AS INT) INTO IntegerTable FROM NumericTable



Answer 3:

FLOOR,CAST ......不负数返回整数部分,一个解决方案是定义的整数部分的内部程序:

DELIMITER //
DROP FUNCTION IF EXISTS INTEGER_PART//

CREATE FUNCTION INTEGER_PART(n DOUBLE)

RETURNS INTEGER


DETERMINISTIC 

BEGIN

IF (n >= 0) THEN RETURN FLOOR(n);
            ELSE RETURN CEILING(n);      
END IF;


END
//

MariaDB [sidonieDE]> SELECT INTEGER_PART(3.7);
+-------------------+
| INTEGER_PART(3.7) |
+-------------------+
|                 3 |
+-------------------+
1 row in set (0.00 sec)

MariaDB [sidonieDE]> SELECT INTEGER_PART(-3.7);
+--------------------+
| INTEGER_PART(-3.7) |
+--------------------+
|                 -3 |
+--------------------+
1 row in set (0.00 sec)

之后,你可以使用像这样的查询程序:

 SELECT INTEGER_PART(value) FROM table;

如果你不想在数据库中定义,你可以把一个IF在那样的查询的内部程序:

 select if(value < 0,CEILING(value),FLOOR(value)) from table ;


文章来源: Get integer part of number
标签: tsql