MYSQL常用數值函式

2021-08-07 10:57:29 字數 3286 閱讀 3639

「春心莫共花爭發,一寸相思一寸灰」

mysql 中另外一類很重要的函式就是數值函式,這些函式能處理很多數值方面的運算。可以想象,如果沒有這些函式的支援,使用者在編寫有關數值運算方面的**時將會困難重重,舉個例子,如果沒有 abs 函式的話,如果要取乙個數值的絕對值,就需要進行好多次判斷才能返回這個值,而數字函式能夠大大提高使用者的工作效率。

abs(x)函式:返回 x 的絕對值。

下例中顯示了對正數和負數分別取絕對值之後的結果。

mysql> select abs(-0.8) ,abs(0.8);

+-----------+----------+

| abs(-0.8) | abs(0.8) |

+-----------+----------+

| 0.8 | 0.8 |

+-----------+----------+

1 row in set (0.09 sec)

ceil(x)函式:返回大於 x 的最大整數。

下例中顯示了對 0.8 和-0.8 分別 ceil 後的結果。

mysql> select ceil(-0.8),ceil(0.8);

+------------+-----------+

| ceil(-0.8) | ceil(0.8) |

+------------+-----------+

| 0 | 1 |

+------------+-----------+

1 row in set (0.03 sec)

floor(x)函式:返回小於 x 的最大整數,和 ceil 的用法剛好相反。

下例中顯示了對 0.8 和-0.8 分別 floor 後的結果。

mysql> select floor(-0.8), floor(0.8);

+-------------+------------+

| floor(-0.8) | floor(0.8) |

+-------------+------------+

| -1 | 0 |

+-------------+------------+

1 row in set (0.00 sec)

mod(x,y)函式:返回 x/y 的模。和 x%y 的結果相同,模數和被模數任何乙個為 null 結果都為 null。如下例所示:

mysql> select mod(15,10),mod(1,11),mod(null,10);

+------------+-----------+--------------+

| mod(15,10) | mod(1,11) | mod(null,10) |

+------------+-----------+--------------+

| 5 | 1 | null |

+------------+-----------+--------------+

1 row in set (0.00 sec)

rand()函式:返回 0 到 1 內的隨機值。

每次執行結果都不一樣,如下例所示:

mysql> select rand(),rand();

+------------------+------------------+

| rand() | rand() |

+------------------+------------------+

| 0.12090325459922 | 0.83369727882901 |

+------------------+------------------+

1 row in set (0.00 sec)

利用此函式可以取任意指定範圍內的隨機數,比如需要產生 0~100 內的任意隨機整數,可以操作如下:

mysql> select ceil(100*rand()),ceil(100*rand());

+------------------+------------------+

| ceil(100*rand()) | ceil(100*rand()) |

+------------------+------------------+

| 91 | 15 |

+------------------+------------------+

1 row in set (0.00 sec)

round(x,y)函式:返回引數 x 的四捨五入的有 y 位小數的值。如果是整數,將會保留 y 位數量的 0;如果不寫 y,則預設 y 為 0,即將 x 四捨五入後取整。適合於將所有數字保留同樣小數字的情況。如下例所示。

mysql> select round(1.1),round(1.1,2),round(1,2);

+------------+--------------+------------+

| round(1.1) | round(1.1,2) | round(1,2) |

+------------+--------------+------------+

| 1 | 1.10 | 1.00 |

+------------+--------------+------------+

1 row in set (0.00 sec)

truncate(x,y)函式:返回數字 x 截斷為 y 位小數的結果。

注意 truncate 和 round 的區別在於 truncate 僅僅是截斷,而不進行四捨五入。下例中

描述了二者的區別:

mysql> select round(1.235,2),truncate(1.235,2);

+----------------+-------------------+

| round(1.235,2) | truncate(1.235,2) |

+----------------+-------------------+

| 1.24 | 1.23 |

+----------------+-------------------+

1 row in set (0.00 sec)

Mysql常用函式 數值函式

數值函式 數字格式化 將number x設定為格式 以四捨五入的方式保留到小數點後d位,而返回結果為乙個字串。select format 25123.265,2 25,123.27 向上取整 ceiling x ceil x 返回不小於x 的最小整數值。select ceiling 1.23 2 s...

MySQL數值函式

1 ceil select ceil 4.01 output 5 ceil 函式用於向上取整 2 floor select floor 4.99 output 4 floor 函式用於向下取整 3 round select round 4.99 output 5 round 函式表示四捨五入 4 t...

Mysql資料庫之常用數值函式

mysql中的常用數值函式函式 功能abs x 返回x的絕對值 ceil x 返回大於x的最小整數 floor x 返回小於x的最大整數 mod x,y 返回x y的模 rand 返回0 1之內的隨機數 round x,y 返回引數x四捨五入,保留y位小數的值 truncate x,y 返回引數x截...