获取整数部分的数字

时间:2012-10-31 02:37:53

标签: tsql

所以我有一个数字小数表,比如说

id    value
2323   2.43
4954  63.98

我想得到

id    value
2323      2
4954     63

T-SQL中有一个简单的功能吗?

3 个答案:

答案 0 :(得分:26)

SELECT FLOOR(value)

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

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

答案 1 :(得分:5)

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

答案 2 :(得分:0)

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 ;