Функции для работы с числами
Для работы с числовыми данными T-SQL предоставляет ряд функций:
ROUND: округляет число. В качестве первого параметра передается число. Второй параметр указывает на длину. Если длина представляет положительное число, то оно указывает, до какой цифры после запятой идет округление. Если длина представляет отрицательное число, то оно указывает, до какой цифры с конца числа до запятой идет округление
12SELECT
ROUND(1342.345, 2)
-- 1342.350
SELECT
ROUND(1342.345, -2)
-- 1300.000
ISNUMERIC: определяет, является ли значение числом. В качестве параметра функция принимает выражение. Если выражение является числом, то функция возвращает 1. Если не является, то возвращается 0.
1234SELECT
ISNUMERIC(1342.345)
-- 1
SELECT
ISNUMERIC(
'1342.345'
)
-- 1
SELECT
ISNUMERIC(
'SQL'
)
-- 0
SELECT
ISNUMERIC(
'13-04-2017'
)
-- 0
ABS: возвращает абсолютное значение числа.
1SELECT
ABS
(-123)
-- 123
CEILING: возвращает наименьшее целое число, которое больше или равно текущему значению.
12SELECT
CEILING(-123.45)
-- -123
SELECT
CEILING(123.45)
-- 124
FLOOR: возвращает наибольшее целое число, которое меньше или равно текущему значению.
12SELECT
FLOOR(-123.45)
-- -124
SELECT
FLOOR(123.45)
-- 123
SQUARE: возводит число в квадрат.
1SELECT
SQUARE(5)
-- 25
SQRT: получает квадратный корень числа.
1SELECT
SQRT(225)
-- 15
RAND: генерирует случайное число с плавающей точкой в диапазоне от 0 до 1.
12SELECT
RAND()
-- 0.707365088352935
SELECT
RAND()
-- 0.173808327956812
COS: возвращает косинус угла, выраженного в радианах
1SELECT
COS(1.0472)
-- 0.5 - 60 градусов
SIN: возвращает синус угла, выраженного в радианах
1SELECT
SIN(1.5708)
-- 1 - 90 градусов
TAN: возвращает тангенс угла, выраженного в радианах
1SELECT
TAN(0.7854)
-- 1 - 45 градусов
Например, возьмем таблицу:
1 2 3 4 5 6 7 8 | CREATE TABLE Products ( Id INT IDENTITY PRIMARY KEY , ProductName NVARCHAR(30) NOT NULL , Manufacturer NVARCHAR(20) NOT NULL , ProductCount INT DEFAULT 0, Price MONEY NOT NULL ); |
Округлим произведение цены товара на количество этого товара:
1 2 | SELECT ProductName, ROUND(Price * ProductCount, 2) FROM Products |