関数の種類
関数は大きく数値関数、文字列関数、日付および時間関数、その他の関数に分類できる。
何かを処理 (操作* 計算) したり、何かを得る働きをしたりすることが多い。
関数の種類 | 関数の例 | 特徴 |
---|---|---|
数値関数 | FLOOR(), CEILING(), ROUND() | 数値の計算をするための関数。値の丸めや塁上、正負の変換など |
文字列関数 | CONCAT(), REPLACE(), CHAR_LENGTH() | 文字列の操作をする関数。大文字* 小文字の変換や部分的な文字列の取り出し、置換、結合など |
日付および時間関数 | CURDATE(), CURTIME(), NOW() | 日付や時間を検索、計算する関数。現在の日時の取得、曜日の計算、日時の差の算出などができる |
その他の関数 | CONVERT(), CAST() | データ型の変換、XML 操作や暗号化、ビット演算など |
数値関数
数字を操作する関数
FLOOR()
mysql> SELECT FLOOR(12.5);
+-------------+
| FLOOR(12.5) |
+-------------+
| 12 |
+-------------+
1 row in set (0.01 sec)
CEILING(), CEIL()
mysql> SELECT CEILING(12.5);
+---------------+
| CEILING(12.5) |
+---------------+
| 13 |
+---------------+
1 row in set (0.00 sec)
mysql> SELECT CEIL(12.5);
+------------+
| CEIL(12.5) |
+------------+
| 13 |
+------------+
1 row in set (0.00 sec)
ROUND()
mysql> SELECT ROUND(12.5);
+-------------+
| ROUND(12.5) |
+-------------+
| 13 |
+-------------+
1 row in set (0.00 sec)
mysql> SELECT ROUND(12.4);
+-------------+
| ROUND(12.4) |
+-------------+
| 12 |
+-------------+
1 row in set (0.02 sec)
TRUNCATE()
mysql> SELECT TRUNCATE(12.4, 3);
+-------------------+
| TRUNCATE(12.4, 3) |
+-------------------+
| 12.400 |
+-------------------+
1 row in set (0.00 sec)
mysql> SELECT TRUNCATE(12.4, 1);
+-------------------+
| TRUNCATE(12.4, 1) |
+-------------------+
| 12.4 |
+-------------------+
1 row in set (0.00 sec)
mysql> SELECT TRUNCATE(12.4, 0);
+-------------------+
| TRUNCATE(12.4, 0) |
+-------------------+
| 12 |
+-------------------+
1 row in set (0.02 sec)
指数対数の計算をする関数
EXP()
mysql> SELECT EXP(2);
+------------------+
| EXP(2) |
+------------------+
| 7.38905609893065 |
+------------------+
1 row in set (0.01 sec)
SQRT()
mysql> SELECT SQRT(4);
+---------+
| SQRT(4) |
+---------+
| 2 |
+---------+
1 row in set (0.01 sec)
POW(), POWER()
mysql> SELECT POW(2, 4);
+-----------+
| POW(2, 4) |
+-----------+
| 16 |
+-----------+
1 row in set (0.01 sec)
mysql> SELECT POWER(3, 5);
+-------------+
| POWER(3, 5) |
+-------------+
| 243 |
+-------------+
1 row in set (0.02 sec)
LN(), LOG(), LOG10(), LOG2()
mysql> SELECT LOG(4);
+--------------------+
| LOG(4) |
+--------------------+
| 1.3862943611198906 |
+--------------------+
1 row in set (0.00 sec)
mysql> SELECT LOG10(100000000000);
+---------------------+
| LOG10(100000000000) |
+---------------------+
| 11 |
+---------------------+
1 row in set (0.01 sec)
mysql> SELECT LOG2(16);
+----------+
| LOG2(16) |
+----------+
| 4 |
+----------+
1 row in set (0.00 sec)
その他の数値関数
RAND()
mysql> SELECT RAND();
+--------------------+
| RAND() |
+--------------------+
| 0.7439923256114054 |
+--------------------+
1 row in set (0.00 sec)
mysql> SELECT FLOOR(RAND() * (10 - 1) + 1);
+------------------------------+
| FLOOR(RAND() * (10 - 1) + 1) |
+------------------------------+
| 3 |
+------------------------------+
1 row in set (0.00 sec)
ABS()
mysql> SELECT ABS(-5);
+---------+
| ABS(-5) |
+---------+
| 5 |
+---------+
1 row in set (0.00 sec)
SIGN()
mysql> SELECT SIGN(-5);
+----------+
| SIGN(-5) |
+----------+
| -1 |
+----------+
1 row in set (0.00 sec)
CRC32()
mysql> SELECT CRC32('aslksdjf');
+-------------------+
| CRC32('aslksdjf') |
+-------------------+
| 950015817 |
+-------------------+
1 row in set (0.00 sec)