Oracle PL/SQL Tutorial/Numerical Math Functions/ABS

Материал из SQL эксперт
Перейти к: навигация, поиск

ABS(10)

SQL> select ABS(10) from dual;
   ABS(10)
----------
        10


ABS(-10) (2)

SQL> select ABS(-10) from dual;
  ABS(-10)
----------
        10


ABS(x) gets the absolute value of x

The absolute value of a number is that number without any positive or negative sign.

The following example displays the absolute value of 10 and - 10:



SQL> SELECT ABS(10), ABS(-10) FROM dual;
   ABS(10)   ABS(-10)
---------- ----------
        10         10
SQL>


SQRT and ABS

SQL>
SQL>
SQL> -- create demo table
SQL> create table myTable(
  2    id           NUMBER(2),
  3    value        NUMBER(6,2)
  4  )
  5  /
Table created.
SQL>
SQL> -- prepare data
SQL> insert into myTable(ID,  value)values (1,9)
  2  /
1 row created.
SQL> insert into myTable(ID,  value)values (2,2.11)
  2  /
1 row created.
SQL> insert into myTable(ID,  value)values (3,3.44)
  2  /
1 row created.
SQL> insert into myTable(ID,  value)values (4,-4.21)
  2  /
1 row created.
SQL> insert into myTable(ID,  value)values (5,10)
  2  /
1 row created.
SQL> insert into myTable(ID,  value)values (6,3)
  2  /
1 row created.
SQL> insert into myTable(ID,  value)values (7,-5.88)
  2  /
1 row created.
SQL> insert into myTable(ID,  value)values (8,123.45)
  2  /
1 row created.
SQL> insert into myTable(ID,  value)values (9,98.23)
  2  /
1 row created.
SQL>
SQL> select * from myTable
  2  /
        ID      VALUE
---------- ----------
         1          9
         2       2.11
         3       3.44
         4      -4.21
         5         10
         6          3
         7      -5.88
         8     123.45
         9      98.23
9 rows selected.
SQL>
SQL> --The following query handles both positive and negative numbers
SQL>
SQL>
SQL> SELECT id, value, SQRT(ABS(value)) FROM myTable
  2  /
        ID      VALUE SQRT(ABS(VALUE))
---------- ---------- ----------------
         1          9                3
         2       2.11        1.4525839
         3       3.44        1.8547237
         4      -4.21       2.05182845
         5         10       3.16227766
         6          3       1.73205081
         7      -5.88       2.42487113
         8     123.45       11.1108056
         9      98.23       9.91110488
9 rows selected.
SQL>
SQL> -- clean the table
SQL> drop table myTable
  2  /
Table dropped.
SQL>
SQL>


Use ABS for column data

SQL> -- create demo table
SQL> create table myTable(
  2    id           NUMBER(2),
  3    value        NUMBER(6,2)
  4  )
  5  /
Table created.
SQL>
SQL> -- prepare data
SQL> insert into myTable(ID,  value)values (1,9)
  2  /
1 row created.
SQL> insert into myTable(ID,  value)values (2,2.11)
  2  /
1 row created.
SQL> insert into myTable(ID,  value)values (3,3.44)
  2  /
1 row created.
SQL> insert into myTable(ID,  value)values (4,-4.21)
  2  /
1 row created.
SQL> insert into myTable(ID,  value)values (5,10)
  2  /
1 row created.
SQL> insert into myTable(ID,  value)values (6,3)
  2  /
1 row created.
SQL> insert into myTable(ID,  value)values (7,-5.88)
  2  /
1 row created.
SQL> insert into myTable(ID,  value)values (8,123.45)
  2  /
1 row created.
SQL> insert into myTable(ID,  value)values (9,98.23)
  2  /
1 row created.
SQL>
SQL> select * from myTable
  2  /
        ID      VALUE
---------- ----------
         1          9
         2       2.11
         3       3.44
         4      -4.21
         5         10
         6          3
         7      -5.88
         8     123.45
         9      98.23
9 rows selected.
SQL>
SQL>
SQL> SELECT id, value, ABS(value)FROM myTable
  2  /
        ID      VALUE ABS(VALUE)
---------- ---------- ----------
         1          9          9
         2       2.11       2.11
         3       3.44       3.44
         4      -4.21       4.21
         5         10         10
         6          3          3
         7      -5.88       5.88
         8     123.45     123.45
         9      98.23      98.23
9 rows selected.
SQL>
SQL>
SQL> -- clean the table
SQL> drop table myTable
  2  /
Table dropped.
SQL>
SQL>