同僚から、MySQL データ型 DECIMAL(N,M) の N と M の意味を尋ねられました。言うまでもなく、M は小数点以下の桁数ですが、この N は小数点前の最大桁数ですか、それとも小数部を追加した後の最大桁数ですか?本当に思い出せないんです。そこで、検証するためにテスト テーブルを作成しました。結果は次のとおりです。 テストテーブル、seller_costフィールドはdecimal(14,2)として定義されています。 テーブル `test_decimal` を作成します ( `id` int(11) NULLではない、 `seller_cost` 小数点(14,2) デフォルト NULL ) エンジン=InnoDB デフォルト文字セット=utf8 最初、テーブルは空です。 mysql> test_decimal から * を選択します。 空のセット (0.00 秒) 整数部分の長さが 14 の数値を挿入すると、列範囲を超えたというエラーが発生します。 mysql> test_decimal(id,seller_cost) に値(1,12345678901234) を挿入します。 エラー 1264 (22003): 行 1 の列 'seller_cost' の値が範囲外です 整数部分の長さが12の数字を挿入すると正しく挿入できます mysql> test_decimal(id,seller_cost) に値(1,123456789012) を挿入します。 クエリは正常、1 行が影響を受けました (0.00 秒) テーブルをクエリすると、MySQL が挿入された整数値の末尾に小数点 2 桁の ".00" を追加していることがわかります。 mysql> test_decimal から * を選択します。 +----+-----------------+ | ID | 販売コスト | +----+-----------------+ | 1 | 123456789012.00 | +----+-----------------+ セット内の 1 行 (0.00 秒) 整数部に 12 桁、小数部に 5 桁の数字を挿入し続けます。数字は正常に挿入されますが、警告が表示されます。警告は、小数部が小数点以下 2 桁に切り捨てられたことを示します。 mysql> test_decimal(id,seller_cost) に値(1,123456789012.12345) を挿入します。 クエリは正常、1 行が影響を受け、1 つの警告 (0.00 秒) mysql> 警告を表示します。 +-------+------+--------------------------------------------------+ | レベル | コード | メッセージ | +-------+------+--------------------------------------------------+ | 注意 | 1265 | 行 1 の列 'seller_cost' のデータが切り捨てられました | +-------+------+--------------------------------------------------+ セット内の 1 行 (0.00 秒) mysql> test_decimal から * を選択します。 +----+-----------------+ | ID | 販売コスト | +----+-----------------+ | 1 | 123456789012.00 | | 1 | 123456789012.12 | +----+-----------------+ セット内の 2 行 (0.00 秒) 整数部分の長さは 2 に短縮され、小数部分の長さは 5 のままです。挿入は成功しますが、小数部分は 2 桁に切り捨てられます。 mysql> test_decimal(id,seller_cost) に値(1,12.12345) を挿入します。 クエリは正常、1 行が影響を受け、1 つの警告 (0.00 秒) mysql> 警告を表示します。 +-------+------+--------------------------------------------------+ | レベル | コード | メッセージ | +-------+------+--------------------------------------------------+ | 注意 | 1265 | 行 1 の列 'seller_cost' のデータが切り捨てられました | +-------+------+--------------------------------------------------+ セット内の 1 行 (0.00 秒) mysql> test_decimal から * を選択します。 +----+-----------------+ | ID | 販売コスト | +----+-----------------+ | 1 | 123456789012.00 | | 1 | 123456789012.12 | | 1 | 12.12 | +----+-----------------+ セット内の 3 行 (0.00 秒) 小数点以下 2 桁の数字を挿入し続けます。正しく挿入され、小数点以下は自動的に 2 桁に切り上げられます。 mysql> test_decimal(id,seller_cost) に値(1,12.1) を挿入します。 クエリは正常、1 行が影響を受けました (0.00 秒) mysql> test_decimal から * を選択します。 +----+-----------------+ | ID | 販売コスト | +----+-----------------+ | 1 | 123456789012.00 | | 1 | 123456789012.12 | | 1 | 12.12 | | 1 | 12.10 | +----+-----------------+ セット内の 4 行 (0.00 秒) 要約すると、DECIMAL(N,M) の M 値は小数点以下の桁数です。挿入された値に小数部が指定されていない場合、または小数部が M 桁未満の場合、小数点以下の M 桁に自動的に埋め込まれます。挿入された値の小数部が M を超える場合、小数部は切り捨てられ、最初の M 桁の小数部が切り捨てられます。 N は整数部分と小数部分の合計の長さです。つまり、挿入される数値の整数部分は NM 桁を超えることはできません。そうでない場合、正常に挿入できず、範囲外エラーが報告されます。 要約する 以上が、MySQL データ型 DECIMAL(N,M) における N と M の意味の詳細な説明に関するこの記事の内容のすべてです。皆様のお役に立てれば幸いです。興味のある方は、引き続きこのサイトを参照してください: MySQL での or ステートメントの使用例、Redis と MySQL の違いの簡単な説明など。ご質問がある場合は、いつでもメッセージを残していただければ、編集者がすぐに返信いたします。このサイトをサポートしてくれた友人たちに感謝します! 以下もご興味があるかもしれません:
|
<<: VMware Workstation のインストール Linux (Ubuntu) システム
1. カスタムテキスト選択 ::選択{ 背景: 赤; 色: 黒; } 2. ビデオコントロールからダ...
この記事では、主に、円形のダイナミックな光る特殊効果アニメーションを実現するための純粋な CSS3 ...
とあるサイトからレンタルした仮想マシンの有効期限が近づいており、更新料が200元以上かかります。Al...
目次1. マスタースレーブ同期原理マスタースレーブ同期アーキテクチャ図(非同期同期)マスタースレーブ...
ステップ1: ディレクトリに入ります: cd /etc/mysql、debian.cnfファイルを表...
私が最も頻繁に使用するコマンドは次の通りです:選択肢CDギットls ssh須藤数週間前、私はこの R...
目次1. 画像のバイナリデータを表示する方法2. 絵の種類の見分け方3. 画像の種類を検出する方法3...
1 セミコロン「;」のない CSS スタイル2 タグが閉じられておらず、「>」がありません...
目的: MySQL 集計関数のネストされた使用集計関数は直接ネストできません。例: max(coun...
私は最近、会社で統計レポートの開発に関わるプロジェクトに取り組んでいました。データの量が比較的多かっ...
目次1. 脱構築とは何か? 2. 配列の分割3. 配列モードと代入モードの統一4. デフォルト値の構...
目次1. はじめに2. axiosインターセプターを使用してフロントエンドログを出力する1. はじめ...
序文実際のプロジェクトでは、最も一般的な処理は計算とループロジックである可能性があります。配列でre...
ユーザーが初めて MySQL データベースをインストールするとき、初期のルート パスワードを変更する...
この記事では、参考までに、簡単なスネークゲームを実装するためのjsキャンバスの具体的なコードを共有し...