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;

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

正の数を引数にセットした場合 実行結果(MySQL)

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

負の数を引数にセットした場合 実行結果(MySQL)

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

0の数を引数にセットした場合 実行結果(MySQL)

文字列を引数にセットした場合

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

文字列を引数にセットした場合 実行結果(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;

文字列を引数にセットした場合

正の数を引数にセットした場合、負の数を引数にセットした場合、0の数を引数にセットした場合(SQLServer実行結果)

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

FLOOR関数サンプル実行結果