web-dev-qa-db-ja.com

MySQLで最も近い整数に切り捨てる方法は?

MySQLで最も近い整数に切り捨てるにはどうすればよいですか?

例:12345.7344 rounds to 12345

mysqlのround()関数は切り上げます。

値や小数点以下の桁数はわかりません。小数点以下4桁で10桁、小数点以下7桁で2桁です。

73
d-_-b

FLOOR を使用:

SELECT FLOOR(your_field) FROM your_table
97
Jocelyn

小数点以下をlower整数に丸める場合は、 FLOOR() を使用します。例:

FLOOR(1.9) => 1
FLOOR(1.1) => 1

小数点以下をnearest整数に丸める場合は、 ROUND() を使用します。例:

ROUND(1.9) => 2
ROUND(1.1) => 1

小数点以下をupper整数に丸める場合は、 CEIL() を使用します。例:

CEIL(1.9) => 2
CEIL(1.1) => 2
32
Luca Fagioli
SELECT FLOOR(12345.7344);

続きを読む こちら

3
hjpotter92

FLOORには次のような「バグ」があるため、SUBSTRFLOORよりも優れている場合があります。

SELECT 25 * 9.54 + 0.5 -> 239.00

SELECT FLOOR(25 * 9.54 + 0.5) -> 238  (oops!)

SELECT SUBSTR((25*9.54+0.5),1,LOCATE('.',(25*9.54+0.5)) - 1) -> 239
3
Guest

小数が必要な場合はこれを使用できます

DECLARE @Num NUMERIC(18, 7) = 19.1471985
SELECT FLOOR(@Num * 10000) / 10000

出力:19.147100クリア:985追加:00

またはこれを使用します:

SELECT SUBSTRING(CONVERT(VARCHAR, @Num), 1, CHARINDEX('.', @Num) + 4)

出力:19.1471クリア:985

0
VolkanCetinkaya

これを試して、

SELECT SUBSTR(12345.7344,1,LOCATE('.', 12345.7344) - 1)

または

SELECT FLOOR(12345.7344)

SQLFiddle Demo

0
John Woo

次の2つの方法で実行できます。

  • select floor(desired_field_value) from table
  • select round(desired_field_value-0.5) from table

2番目の説明:12345.7344整数を想定しています。したがって、12345.7344-0.5 = 12345.2344となり、結果の丸めは12345になります。

0
Ananya Verma