MySQLのTRUNCATE()関数とROUND()関数の違いとは?切り捨てと四捨五入のポイントを解説
TRUNCATE()関数の基本的な動作
TRUNCATE()関数は、数値Xを小数点以下D桁で切り捨てた値を返します。Dが0の場合は小数点以下が削除され、Dが負の値の場合は整数部分の下位D桁が切り捨てられます。以下の例をご覧ください。
mysql> Select TRUNCATE(7.536432,2); +----------------------+ | TRUNCATE(7.536432,2) | +----------------------+ | 7.53 | +----------------------+ 1 row in set (0.00 sec)
ROUND()関数の基本的な動作
ROUND()関数は、数値Xを最も近い整数に四捨五入した値を返します。第2引数Dを指定すると、小数点以下D桁に四捨五入された値を返します。Dは正の値である必要があり、そうでない場合は小数点以下のすべての桁が削除されます。以下の例をご覧ください。
mysql> SELECT ROUND(5.693893); +---------------------------------------------------------+ | ROUND(5.693893) | +---------------------------------------------------------+ | 6 | +---------------------------------------------------------+ 1 row in set (0.00 sec) mysql> SELECT ROUND(5.693893,2); +---------------------------------------------------------+ | ROUND(5.693893,2) | +---------------------------------------------------------+ | 5.69 | +---------------------------------------------------------+ 1 row in set (0.00 sec)
TRUNCATE()とROUND()の重要な違い
上記の定義と実行例から、2つの関数には以下の重要な違いがあることがわかります。
- ROUND()関数は、第2引数Dと数値そのもの(D桁目の次の数字が5以上かどうか)に基づいて、数値を切り上げまたは切り下げします。
- TRUNCATE()関数は、D桁目の次の数字が5以上かどうかを確認せずに、単純に小数点以下D桁まで数値を切り捨てます。
実際に同じ数値に対して両方の関数を実行すると、その違いが明確に現れます。
mysql> Select ROUND(1.289,2)AS 'AFTER ROUND',TRUNCATE(1.289,2)AS 'AFTER TRUNCATE'; +-------------+----------------+ | AFTER ROUND | AFTER TRUNCATE | +-------------+----------------+ | 1.29 | 1.28 | +-------------+----------------+ 1 row in set (0.00 sec)
この例では、1.289を小数点以下2桁で処理しています。ROUND()関数は3桁目の「9」が5以上のため繰り上げて1.29を返しますが、TRUNCATE()関数は単純に切り捨てて1.28を返します。金額計算など丸め方法が結果に影響する場面では、用途に応じて適切な関数を選択することが重要です。
-
MySQLのTINYINT(1)とブール型(BOOLEAN)の違いとは?
結論から言うと、TINYINT(1)とブール型(BOOLEAN)の間に違いはありません。MySQLでは、BOOLまたはBOOLEANというキーワードは内部的にTINYINT(1)へと変換されます。つまり、BOOLやBOOLEANはTINYINT(1)の別名(シノニム)として扱われるのです。それでは、実際にテーブルを作成して確認してみましょう。BOOLEAN型でテーブルを作成するmysql> create table DemoTable ( isMarried Boolean ); Query OK, 0 rows affected (1.77 sec)次に、作成したテーブルの構造
-
MySQLにおける「!=NULL」と「IS NOT NULL」の違いとは?
MySQLでは、値を!=NULLと比較すると、結果は必ずNULLになります。つまり、!=NULLという比較は意味を持ちません。NULLは「不明な値」を表すため、通常の比較演算子では判定できないのです。NULL値を判定するには、専用の演算子であるIS NOT NULLを使用します。ここでは、!=NULLとIS NOT NULLの違いを実際に確認するために、まずテーブルを作成します。テーブルの作成まず、次のコマンドでテーブルを作成します。mysql> create table DemoTable1970 (