Функция SQL Server ABS()

В этом руководстве вы узнаете, как использовать функцию SQL Server ABS() для возврата абсолютного значения числа.

Синтаксис функции SQL Server ABS()

Функция ABS() возвращает абсолютные(положительные) значения числа. Другими словами, функция ABS() изменяет отрицательное значение на положительное. Она не влияет на положительные значения или ноль.

Вот синтаксис функции ABS():

ABS( numeric_expression )

В этом синтаксисе числовое_выражение — это число или выражение, для которого требуется найти абсолютное значение.

Функция ABS() возвращает положительное число входного значения с типом, зависящим от типа входного значения.

В следующей таблице показан тип входного значения и соответствующий ему тип возвращаемого значения.

Тип ввода Тип возврата
плавающий, реальный плавать
десятичная дробь(п, с) десятичная(38, с)
int, smallint, tinyint инт
bigint bigint
деньги, маленькиеденьги деньги
кусочек плавать

Функция ABS() возвращает null, если входное значение равно NULL.

Примеры функций SQL Server ABS()

Давайте рассмотрим несколько примеров использования функции ABS().

1) Пример базовой функции SQL Server ABS()

В следующем примере функция ABS используется для нахождения абсолютных значений отрицательных чисел:

SELECT ABS(-10) result;

Выход:

result
-----------
10

2) Использование функции ABS() с NULL

Функция ABS() вернет NULL, если входное значение равно NULL. Например:

SELECT ABS(NULL) result;

Выход:

SELECT ABS(NULL) result;

3) Пример ошибки арифметического переполнения

При использовании функции ABS() вы можете столкнуться с ошибкой переполнения, если попытаетесь вычислить абсолютное значение числа, превышающего максимальное значение, представимое указанным типом.

Например, тип данных int в SQL Server имеет диапазон значений от -2 147 483 648 до 2 147 483 647.

Если применить функцию ABS() к знаковому целому числу, например -2 147 483 648, возникнет ошибка переполнения, поскольку абсолютное значение превышает положительный предел диапазона для типа данных int.

Следующий фрагмент иллюстрирует ошибку арифметического переполнения:

DECLARE @x INT;  
SET @x = -2147483648;  
SELECT ABS(@x);  
GO 

Выход:

Arithmetic overflow error converting expression to data type int.

4) Использование функции ABS с табличными данными

Сначала создайте таблицу с именем temperatur_readings, в которой будут храниться показания температуры:

CREATE TABLE temperature_readings(
     id INT IDENTITY PRIMARY KEY,
     recorded_at DATETIME,
     temperature DECIMAL(5, 2)
);

Во-вторых, вставьте строки в таблицу temperatura_readings:

INSERT INTO
  temperature_readings(recorded_at, temperature)
VALUES
 ('2024-04-04 08:00:00', 24.5),
 ('2024-04-04 08:15:00', 25.2),
 ('2024-04-04 08:30:00', 26.8),
 ('2024-04-04 08:45:00', 23.9),
 ('2024-04-04 09:00:00', 25.7);

В-третьих, рассчитайте абсолютную разницу температур относительно эталонной температуры, которая составляет 25 градусов Цельсия:

SELECT
  recorded_at,
  temperature,
  ABS(temperature - 25) AS temperature_diff_from_ref
FROM
  temperature_readings;

Выход:

recorded_at         | temperature | temperature_diff_from_ref
--------------------+-------------+--------------------------
2024-04-04 08:00:00 | 24.50       | 0.50
2024-04-04 08:15:00 | 25.20       | 0.20
2024-04-04 08:30:00 | 26.80       | 1.80
2024-04-04 08:45:00 | 23.90       | 1.10
2024-04-04 09:00:00 | 25.70       | 0.70
(5 rows)

Краткое содержание

  • Используйте функцию ABS() для возврата абсолютного значения числа.
Мирослав С.

Автор статей, ИБ-специалист