FLOOR( 数値 )
FLOOR関数を使用することで数値の小数点以下を切り捨てることができます。
mysql> SELECT FLOOR( 52.5567 ); +------------------+ | FLOOR( 52.5567 ) | +------------------+ | 52 | +------------------+ 1 row in set (0.06 sec)
FLOOR関数は「引数以下で最大の整数」を返すため、負の小数を切り下げた場合、切り下げ後の整数部分は変更されるので注意しましょう。
mysql> SELECT FLOOR( -52.5567 ); +-------------------+ | FLOOR( -52.5567 ) | +-------------------+ | -53 | +-------------------+ 1 row in set (0.00 sec)
ちなみにTRUNCATE関数は引数の数値がゼロの方向に丸められるため、負の小数を引数とした場合、FLOOR関数とは異なる動作をします。
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)
整数を引数とした場合は、整数がそのまま返されます。
mysql> SELECT FLOOR( 52 ); +-------------+ | FLOOR( 52 ) | +-------------+ | 52 | +-------------+ 1 row in set (0.00 sec)
文字を引数とした場合はNULLではなく0が返されます。
mysql> SELECT FLOOR( 'a' ); +--------------+ | FLOOR( 'a' ) | +--------------+ | 0 | +--------------+ 1 row in set (0.00 sec)