(SQLite3, MySQL, PHP) 小数点以下は切り上げて整数にしたい

たとえば、あるフィールドの値をすべて2分の1にする場合。
MySQLでは"CEIL()"が使えるので簡単です。


(MySQL)
UPDATE tbl SET hoge = CEIL(hoge / 2);


しかし、SQLiteでは"CEIL()"を使えません。
上のSQLPHPで実行すると、下記のような警告が…。


Warning: SQLite3::exec() [sqlite3.exec]: no such function: CEIL in D:\MyDocument...
【参考】
SQLではサポートされていない機能の一覧
http://www.sqlite.org/cvstrac/wiki?p=UnsupportedSql


これは困りました。
で、ぐぐって探し当てた解決策が、下記です。
型変換の"CAST()"関数を使います。


(SQLite)
※ 小数点以下は切り捨て
UPDATE tbl SET hoge = CAST(hoge / 2 as int);

※ 小数点以下は切り上げ
UPDATE tbl SET hoge = (CASE WHEN hoge % 2 > 0 THEN CAST(hoge / 2 + 1 as int) ELSE CAST(hoge / 2 as int) END);

【参考】
sql - Getting the floor value of a number in SQLite? - Stack Overflow
http://stackoverflow.com/questions/7129249/getting-the-floor-value-of-a-number-in-sqlite


実は、フィールドの型を整数にしていれば、MySQLならば切り上げ、SQLite3ならば切り捨ての処理が自動で行われます。
まとめると、下記です。

MySQLSQLite3
切り上げCEIL(hoge / 2)(CASE
WHEN hoge % 2 > 0
THEN CAST(hoge / 2 + 1 as int)
ELSE CAST(hoge / 2 as int)
END)
切り捨てFLOOR(hoge / 2)CAST(hoge / 2 as int)
整数型のフィールド(hoge / 2)
切り上げ
(hoge / 2)
切り捨て