SQL道場 算術関数 FLOOR関数
SQLで最大の整数を返すFLOOR関数について記載しています。
対応データベース:SQL Server MySQL Oracle PostgreSQL DB2
FLOOR関数の文法
SELECT FLOOR(数値) FROM テーブル
引数 | 数値 | 数値型(任意の数値) |
返値 | 数値 | 数値型 引数の値以下で最大の整数 |
FLOOR関数は指定された引数の値以下で最大の整数を戻します。小数点以下は切り捨てになります。引数が負の数値の場合は、負側の最も近い整数を返します。小数点を切り捨てたい時に便利な関数になります。
実行例
MySQLの実行例
/* 正の数を引数にセットした場合 */
SELECT FLOOR(10.25) as floor_value;
/* 負の数を引数にセットした場合 */
SELECT FLOOR(-2.5) as floor_value;
/* 0の数を引数にセットした場合 */
SELECT FLOOR(-0) as floor_value;
/* 文字列を引数にセットした場合 */
SELECT FLOOR('t') as floor_value;
正の数を引数にセットした場合

負の数を引数にセットした場合

0の数を引数にセットした場合

文字列を引数にセットした場合
MySQLの場合、FLOORに文字列をセットした場合エラーにならず、ゼロを返します。これは、SQLServerとMySQLで挙動が異なります。

SQLServerの実行例
/* 正の数を引数にセットした場合 */
SELECT FLOOR(10.25) as abs_value;
/* 負の数を引数にセットした場合 */
SELECT FLOOR(-2.5) as abs_value;
/* 0の数を引数にセットした場合 */
SELECT FLOOR(-0) as abs_value;
/* 文字列を引数にセットした場合 */
SELECT FLOOR('t') as abs_value;
文字列を引数にセットした場合

CEILING関数に文字列をセットした場合、MySQLとSQLServerの挙動の違い。MySQLの場合は、文字列を0で返しますが、SQLServerの場合は、「データ型 varchar を float に変換中にエラーが発生しました。」というメッセージを表示してエラーになります。
