SQL - ABS() 函数



SQL ABS() 函数接受一个数字值作为参数,并返回该数字值的绝对值。

绝对值定义为数轴上特定点到零的距离,与方向无关。由于绝对值不考虑方向,因此永远不会为负。因此,对于此方法,如果传递的参数不为负,则返回原始参数。但如果传递的参数为负,则结果将为此参数的否定。

语法

以下是 SQL ABS() 函数的语法 -

ABS(number)

其中,number 是我们需要找到其绝对值的数值。

示例

如果我们将正值作为参数传递给 SQL ABS() 函数,它将返回与下面所示相同的数值 -

SELECT ABS(0.8)
AS Aboslute_Value

运行以上程序时,将产生以下结果 -

+----------------+
| Aboslute_Value |
+----------------+
| 0.8            |
+----------------+

示例

如果我们将负值作为参数传递给此函数,它将返回相同的数值,但没有负号,如下所示 -

SELECT ABS(-55787)
AS Aboslute_Value

执行以上代码时,我们将获得以下输出 -

+----------------+
| Aboslute_Value |
+----------------+
| 55787          |
+----------------+

示例

如果我们将数学常数 PI 作为参数传递,此函数将返回其等效的常数值,如下所示 -

SELECT ABS(PI())
AS Aboslute_Value

以下是以上代码的输出 -

+------------------+
| Aboslute_Value   |
+------------------+
| 3.14159265358979 |
+------------------+

示例

如果传递的值为 NULL 或出现错误,则此函数返回 NULL。

SELECT ABS(NULL)
AS Aboslute_Value

以上代码的输出如下 -

+----------------+
| Aboslute_Value |
+----------------+
| NULL           |
+----------------+

示例

如果我们将值以字符串的形式传递给此函数,它将返回相同的值,但没有负号(如果给出)。

SELECT ABS('-225')
AS Aboslute_Value

以下是以上代码的输出 -

+----------------+
| Aboslute_Value |
+----------------+
| 225            |
+----------------+

示例

如果传递给此函数的值既不是 null 也不是数值,则会引发错误。

SELECT ABS('string')
AS Aboslute_Value

执行以上代码时,我们将获得以下输出 -

Msg 8114, Level 16, State 5, Line 1
Error converting data type varchar to float.

示例

假设我们创建了一个名为 CUSTOMERS 的表,如下所示 -

create table CUSTOMERS(ID INT NOT NULL, 
NAME VARCHAR(20) NOT NULL, 
AGE INT NOT NULL, 
ADDRESS CHAR(25), 
SALARY DECIMAL(18, 2), 
PRIMARY KEY(ID));
Commands completed successfully.

让我们向其中插入一些值 -

insert INTO CUSTOMERS VALUES(1, 'Ramesh', 32, 'Ahmedabad', 2000.00);
insert INTO CUSTOMERS VALUES(2, 'Khilan', 25, 'Delhi', 1500.00);
insert INTO CUSTOMERS VALUES(3, 'kaushik', 23, 'Kota', 2000.00);
insert INTO CUSTOMERS VALUES(4, 'Chaitali', 25, 'Mumbai', 6500.00);
insert INTO CUSTOMERS VALUES(5, 'Hardik', 27, 'Bhopal', 8500.00);
insert INTO CUSTOMERS VALUES(6, 'Komal', 22, 'MP', 4500.00);
insert INTO CUSTOMERS VALUES(7, 'Muffy', 24, 'Indore', 10000.00);
()
()
()
()
()
()
()

以下查询计算所有客户的 EPF(等于基本工资的 12%),每月从工资中扣除 -

SELECT SALARY, 
abs(SALARY*0.12) 
as EPF 
FROM customers;

产生的结果如下 -

+----------+-----------+
| SALARY   | EPF       |
+----------+-----------+
|  2000.00 |  240.0000 |
|  1500.00 |  180.0000 |
|  2000.00 |  240.0000 |
|  6500.00 |  780.0000 |
|  8500.00 | 1020.0000 |
|  4500.00 |  540.0000 |
| 10000.00 | 1200.0000 |
+----------+-----------+
sql-numeric-functions.htm
广告