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)。コンバーターはpriceamountcostcentsを含むカラム名を検出し、コメントでDECIMALまたは整数セントアプローチを提案する場合があります。

オーバーフロー保護

常に余裕のある型を選択してください。現在の最大IDが50,000であればINTEGERで安全ですが、テーブルが数十億行に成長する場合は、後の大変なマイグレーションを避けるために最初からBIGINTを使用してください。

ユースケース

精度が重要な金融アプリケーションを設計し、JSONペイロード内の整数の数量、小数の価格、浮動小数点の座標をコンバーターに正しく区別させる必要がある場合に使用します。

試してみる — JSON to SQL Schema

フルツールを開く