MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQL TRUNCATE()関数の使い方!数値の切り捨て処理を徹底解説

MySQL TRUNCATE()関数とは

MySQLのTRUNCATE()関数は、指定した数値Xを小数点以下D桁に切り捨てた値を返す数学関数です。ここでの「切り捨て」とは、指定した桁以降の数字を単純に削除する処理を指します。そのため、四捨五入を行うROUND()関数とは結果が異なる点に注意が必要です。

TRUNCATE()関数の主な特徴は以下のとおりです。

  • Dが0の場合:小数点以下がすべて削除され、整数部分のみが返されます。
  • Dが負の値の場合:整数部分の下位D桁が切り捨てられます。

基本構文

TRUNCATE(X, D)

それぞれの引数の意味は次のとおりです。

  • X:切り捨ての対象となる数値。
  • D:小数点以下何桁まで残すかを指定する数値。

使用例

例1:小数第2位で切り捨てる

次の例では、数値「10.7336432」を小数点以下2桁で切り捨てています。

mysql> SELECT TRUNCATE(10.7336432, 2);
+-------------------------+
| TRUNCATE(10.7336432, 2) |
+-------------------------+
|                   10.73 |
+-------------------------+
1 row in set (0.00 sec)

実行結果から、元の数値の小数第3位以降が削除され、「10.73」が返されていることが確認できます。四捨五入ではなく切り捨てなので、第3位の数字「3」が「5」以上でなくても、また「5」未満であっても、単純に削除される点がポイントです。

例2:Dが0の場合(小数部を削除)

mysql> SELECT TRUNCATE(25.876, 0);
+---------------------+
| TRUNCATE(25.876, 0) |
+---------------------+
|                  25 |
+---------------------+
1 row in set (0.00 sec)

Dに0を指定すると、小数点以下がすべて削除され、整数部分の「25」だけが返されます。

例3:Dが負の値の場合(整数部分を切り捨て)

mysql> SELECT TRUNCATE(1234.567, -2);
+------------------------+
| TRUNCATE(1234.567, -2) |
+------------------------+
|                   1200 |
+------------------------+
1 row in set (0.00 sec)

Dに負の値を指定すると、整数部分の下位桁が切り捨てられます。この例では-2を指定しているため、十の位以下が削除され「1200」が返されます。

まとめ

TRUNCATE()関数は、金額計算や表示用データの整形など、四捨五入せずに桁を揃えたい場面で非常に便利な関数です。ROUND()との違いを理解したうえで、用途に応じて使い分けるとよいでしょう。

  1. MySQLのINSERT IGNOREステートメントとは?重複データの挿入を防ぐ方法

    INSERT IGNOREステートメントは、MySQLのテーブルに重複したデータが挿入されるのを防ぐために使用されます。通常のINSERT文の代わりにINSERT IGNOREコマンドを使うと、新規レコードが既存レコードと重複していなければ通常どおり挿入されますが、重複している場合はIGNOREキーワードによってMySQLがそのレコードを黙って破棄し、エラーを発生させません。 基本構文 INSERT IGNORE INTO table_name(...) ここで、table_nameは値を挿入したいテーブルの名前です。カラム名とVALUES句の指定方法は通常のINSERT文と同じです。 動作の

  2. MySQLでCHAR()関数の逆の処理を行う方法|ASCII()とORD()の違いを解説

    MySQLにおいて、CHAR()関数の逆の働きをするのは ASCII() 関数と ORD() 関数です。CHAR() は数値(文字コード)を文字に変換する関数ですが、ASCII() は引数の文字列の左端の文字に対応する数値(ASCIIコード)を返し、ORD() は左端の文字の文字コードを返します。 ASCII()とORD()の違い どちらも文字から数値への変換を行う点は共通していますが、以下のような違いがあります。 ASCII():シングルバイト文字専用。マルチバイト文字を渡すと警告が出て64を返します。 ORD():マルチバイト文字にも対応しており、最初のバイトの値に基づいて計算された文字