JSON数値をSQL IntegerおよびNumericカラムにマッピングする
JSONの数値がSQL INTEGER、BIGINT、SMALLINT、DECIMALカラム型にどのようにマッピングされるかを学びます。精度と範囲の考慮事項を解説。
Basic Tables
詳細な説明
数値型のマッピング
JSONには整数と浮動小数点数の両方をカバーする単一のnumber型があります。一方、SQLは異なる範囲、精度、ストレージコストを持つ豊富な数値型を提供します。
整数の検出
コンバーターは各数値を検査して整数かどうかを判断します:
{
"id": 42,
"quantity": 1000,
"total_cents": 29999,
"rating": 4.5,
"latitude": 35.6762
}
CREATE TABLE products (
id INTEGER NOT NULL,
quantity INTEGER NOT NULL,
total_cents INTEGER NOT NULL,
rating DECIMAL(10, 2) NOT NULL,
latitude DOUBLE PRECISION NOT NULL
);
適切な整数型の選択
| SQL型 | 範囲 | 使用場面 |
|---|---|---|
SMALLINT |
-32,768 ~ 32,767 | ステータスコード、小さなカウンター |
INTEGER |
-21億 ~ 21億 | ほとんどのID、数量 |
BIGINT |
-9.2E18 ~ 9.2E18 | ミリ秒のタイムスタンプ、大きなID |
コンバーターは整数に対してデフォルトでINTEGERを使用します。サンプル値がINTEGERの範囲(約21億)を超える場合、BIGINTにアップグレードされます。IDカラムに常にBIGINTを使用するようツールを設定することもできます。
浮動小数点数の精度
小数値に対して、コンバーターは以下から選択します:
DECIMAL(p, s)— 正確な精度、金額や計測値に最適。DOUBLE PRECISION— 近似的だが高速、科学データや座標に適している。
金額カラム
一般的なパターンとして、浮動小数点の丸めエラーを避けるために金額を整数のセント単位で保存します(例:29999 = $299.99)。コンバーターはprice、amount、cost、centsを含むカラム名を検出し、コメントでDECIMALまたは整数セントアプローチを提案する場合があります。
オーバーフロー保護
常に余裕のある型を選択してください。現在の最大IDが50,000であればINTEGERで安全ですが、テーブルが数十億行に成長する場合は、後の大変なマイグレーションを避けるために最初からBIGINTを使用してください。
ユースケース
精度が重要な金融アプリケーションを設計し、JSONペイロード内の整数の数量、小数の価格、浮動小数点の座標をコンバーターに正しく区別させる必要がある場合に使用します。