Итак, у меня есть таблица с числами в десятичных знаках, скажем,
id value
2323 2.43
4954 63.98
И я хотел бы получить
id value
2323 2
4954 63
Есть ли простая функция в T-SQL?
Итак, у меня есть таблица с числами в десятичных знаках, скажем,
id value
2323 2.43
4954 63.98
И я хотел бы получить
id value
2323 2
4954 63
Есть ли простая функция в T-SQL?
SELECT FLOOR(value)
http://msdn.microsoft.com/en-us/library/ms178531.aspx
FLOOR возвращает наибольшее целое число, меньшее или равное указанному числовому выражению.
Предполагая, что вы в порядке с усечением десятичной части, которую вы можете сделать: SELECT Id, CAST(value AS INT) INTO IntegerTable FROM NumericTable
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 ;