Получить целую часть числа

Итак, у меня есть таблица с числами в десятичных знаках, скажем,

id    value
2323   2.43
4954  63.98

И я хотел бы получить

id    value
2323      2
4954     63

Есть ли простая функция в T-SQL?

Ответ 2

Предполагая, что вы в порядке с усечением десятичной части, которую вы можете сделать: SELECT Id, CAST(value AS INT) INTO IntegerTable FROM NumericTable

Ответ 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 ;