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関数

CEILING関数

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

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

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;

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