TRUNCATE( 数値X, 数値Y )
TRUNCATE関数を使用することで数値Xを小数点以下第 ( Y + 1 ) 位を切り捨てることができます。
数値を切り捨てる際、数値はゼロの方向に丸められます。
mysql> SELECT TRUNCATE( 123.456, 1 ); +------------------------+ | TRUNCATE( 123.456, 1 ) | +------------------------+ | 123.4 | +------------------------+ 1 row in set (0.00 sec)
負の小数を引数とした場合、切捨て後の数値はゼロの方向に丸められます。
mysql> SELECT TRUNCATE( -123.456, 1 ); +-------------------------+ | TRUNCATE( -123.456, 1 ) | +-------------------------+ | -123.4 | +-------------------------+ 1 row in set (0.00 sec)
第二引数が0の場合、FLOOR関数とほとんど同じ動作をしますが、負の小数を引数とした場合は数値の丸める方向が異なるため注意が必要です。
FLOOR関数は引数以下で最大の整数を返しますが、TRUNCATE関数の場合はゼロの方向に数値が丸められます。
mysql> SELECT TRUNCATE( 15.56 ,0 ), FLOOR( 15.56 ); +----------------------+----------------+ | TRUNCATE( 15.56 ,0 ) | FLOOR( 15.56 ) | +----------------------+----------------+ | 15 | 15 | +----------------------+----------------+ 1 row in set (0.00 sec) mysql> -- 負の小数の場合、動作が異なる mysql> SELECT TRUNCATE( -15.56 ,0 ), FLOOR( -15.56 ); +-----------------------+-----------------+ | TRUNCATE( -15.56 ,0 ) | FLOOR( -15.56 ) | +-----------------------+-----------------+ | -15 | -16 | +-----------------------+-----------------+ 1 row in set (0.00 sec)
文字を引数とした場合はNULLではなく0が返されます。
mysql> SELECT TRUNCATE( 'a', 0 ); +--------------------+ | TRUNCATE( 'a', 0 ) | +--------------------+ | 0 | +--------------------+ 1 row in set (0.00 sec)