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 |
+----------------+
示例
如果我们将数学常数π作为参数传递给这个函数,该函数将返回其等效的常数值,如下所示:
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.
让我们将r值插入其中−
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 |
+----------+-----------+