SQL道場 算術関数 CEIL/CEILING関数

SQLで小数点を含む数値を切り上げる場合に使用するCEIL/CEILING関数について記載しています。

対応データベースSQL Server MySQL Oracle PostgreSQL DB2

CEIL/CEILING関数の文法

SELECT CEIL(数値) FROM テーブル
SELECT CEILING(数値) FROM テーブル
引数数値数値型(任意の数値)
返値数値整数型 引数の値以上で最小の整数

CEIL/CEILING関数は指定された引数の値以上で最小の整数を戻します。小数点を切り上げを行う際に使用します。たとえば、1.23等の小数点を含む数値を引数にセットした場合は、小数点第1位を切り上げして、2が返されます。マイナスの場合は注意が必要です、「-1.23」を引数にセットすると、「-1」が返されます。マイナスは切り上げる場合は、小数点部分が切り捨てとなります。

また、SQLServerはCEILING関数のみ使用可能です。MySQLについては、CEIL関数及びCEILING関数どちらも使用することが可能です。

実行例

MySQLの実行例

/* 正の数を引数にセットした場合 */
SELECT CEIL(1.43) as ceil_value;
SELECT CEILING(1.43) as ceil_value;

/* 負の数を引数にセットした場合 */
SELECT CEIL(-1.43) as ceil_value;

/* 0の数を引数にセットした場合 */
SELECT CEIL(-0) as ceil_value;

/* 文字列を引数にセットした場合 */
SELECT CEIL('t') as ceil_value;

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

CEIL関数

CEIL関数の実行結果(MySQL)

CEILING関数

CEILING関数の実行結果(MySQL)

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

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

文字列を引数にセットした場合 の実行結果

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

SQLServerの実行例

/* 正の数を引数にセットした場合 */
SELECT CEILING(1.43) as ceiling_value;

/* 負の数を引数にセットした場合 */
SELECT CEILING(-1.43) as ceiling_value;

/* 0の数を引数にセットした場合 */
SELECT CEILING(-0) as ceiling_value;

/* 文字列を引数にセットした場合 */
SELECT CEILING('t') as ceiling_value;
正の数を引数にセットした場合、負の数を引数にセットした場合、0の数を引数にセットした場合、文字列を引数にセットした場合の実行結果(SQLServer)

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