所以我有一个数字小数表,比如说
id value
2323 2.43
4954 63.98
我想得到
id value
2323 2
4954 63
T-SQL中有一个简单的功能吗?
答案 0 :(得分:26)
答案 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 ;