web-dev-qa-db-ja.com

お金を挿入するときに使用するSQLデータ型

Oracle SQLデータベースを使用しており、行の一部として金銭的価値(給与)を挿入する必要があります。いくつかの奇妙な理由で、moneyコマンドが機能していませんが、これで機能する代替手段はありますか?

データ入力フォーマット:£00,000.000

CREATE TABLE staff
                   (staffno CHAR(6) NOT NULL
                    , staffsurname VARCHAR(8) NOT NULL
                    , staffforename VARCHAR(7) NOT NULL
                    , salary MONEY NOT NULL
                    , PRIMARY KEY (staffno)
                   );
8
user3686991

この行を見てください

_salary MONEY NOT NULL
_

既存のmoneyデータ型はありません。

_SQL-Server_小額タイプに似たものを探している場合は、Number(10,4)を使用して、数値をフォーマットします。

_to_char_関数を使用して数値をフォーマットできます

_select to_char(yourColumn, '$99,999.99') from yourTable where someCondition
_

「奇妙な」理由は単純です: MONEYデータ型はありません

金額に最も適したデータ型は NUMBER (適切なscaleを使用)です。これはdecimal浮動小数点型であるため、binary浮動小数点型よりも金額に適していますBINARY_FLOATおよびBINARY_DOUBLE

ただし、フロントエンドで入力文字列£00,000.000解析し、数値として送信する必要があることに注意してくださいバックエンドへ。

5
Heinzi