9

DECIMAL(M, D) カラムでは、MySQL は D の範囲を 0 ~ 30 にするオプションを提供します。

0 のオプションが欠落している微妙な理由はありますか? 小数点以下のない小数は整数ではありませんか?

小数点以下の桁数のない DECIMAL を指定する必要があるのは、いつ、どのような場合ですか?

4

4 に答える 4

8

DECIMAL タイプの数値範囲は、INTEGER または BIGINT の場合よりもはるかに大きくなります。DECIMAL(65, 0) に格納できる最大数は 65 ナインです。BIGINT の最大数は 18446744073709551615 です。

DECIMAL(x, 0) は、小さい数値の場合、多くの場合、少し高価になります。数値がそれらのいずれかの範囲内にある場合は、定義済みのINTEGER 型の使用を検討してください。


DECIMAL(x, 0) フィールドのバイト単位のストレージ要件は、次のx式に従って異なります。

Storage = x / 9 + Leftover
Leftover = round_up((x % 9) / 2) (i.e., about half of the leftover digits)

数値型のストレージ要件の詳細については、MySQL のマニュアルを参照して、自分で比較してください。

于 2012-05-15T14:09:08.107 に答える
2

より大きい値を格納できるようにする以外BIGINTに、次の場合に使用できDECIMAL(x,0)ます。

  • 範囲内の値を許可-9, ... , +9: 使用DECIMAL(1,0)(1 バイトを使用)

  • 範囲内の値を許可-99, ... , +99: 使用DECIMAL(2,0)(1 バイトを使用)

  • 範囲内の値を許可-999, ... , +999: 使用DECIMAL(3,0)(2 バイトを使用)

  • 範囲内の値を許可-9999, ... , +9999: 使用DECIMAL(4,0)(2 バイトを使用)

...

  • 範囲内の値を許可-999999999, ... , +999999999: 使用DECIMAL(9,0)(4 バイトを使用)

... etc (最大DECIMAL(65,0)で 29 バイトを使用)

于 2012-05-15T14:17:24.037 に答える
1

ビッグでは、18 446 744 073 709 551 615以下の数字しか格納できません。これは20桁ですが、DECIMALでは65桁でも格納できます。また、intを使用すると、桁数を低い数(たとえば、1)に直接制限することはできません。したがって、より柔軟性があり、既存のデータベースで拡張する必要がある場合は、より簡単です。

于 2012-05-15T14:13:09.483 に答える
1

Mysql では、Decimal(3,2) は 3.42 のように合計 3 桁と小数点以下 2 桁を意味します。

Decimal(3,0) は、合計 3 桁で、345 のように小数点以下の桁がないことを意味します。指定された範囲を超えて小数点の括弧内に何かを記述しても、Mysql は自動的にそれらを 000 または 999 に更新します。

于 2021-03-26T11:46:08.023 に答える