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
廣告