2015-03-12 5 views
6

Ich verwende Oracle SQL-Datenbank und ich muss einen Geldwert (Gehalt) als Teil einer Zeile einfügen. Aus irgendeinem seltsamen Grund funktioniert das Geld-Kommando nicht, gibt es irgendwelche Alternativen, die damit arbeiten würden?SQL-Datentyp zum Einfügen von Geld

Dateneingabeformat: £ 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) 
        ); 
+0

Oracle verwenden, meine Entschuldigungen - fixiert den Tag. – user3686991

+2

Oracle empfiehlt die Verwendung von 'varchar2()' anstelle von 'varchar()' für Strings als Notiz. –

Antwort

5

Blick auf dieser Linie

salary MONEY NOT NULL 

Es gibt keinen vorhandenen Geld-Datentyp.

Wenn Sie etwas ähnlich wie SQL-Server kleinen Geldtyp suchen, möchten Sie ein Number(10,4) verwenden und formatieren Sie die Nummer.

Sie das Zahlenformat können to_char Funktion

select to_char(yourColumn, '$99,999.99') from yourTable where someCondition 
+0

Es gibt kein Front-End für diese Anwendung, nur die Struktur der Datenbank (ich bin ein Student, so dass es nur mit Orakel Iacademy üben), so kann ich nicht die Zeichenfolge analysieren. – user3686991

+0

@ user3686991 siehe bearbeiten. –

+0

Zum Beispiel, wenn meine Eingabe war: £ 45,000.00. Würde es mit VARCHAR (7,2) funktionieren? – user3686991

3

Die "seltsame" Grund ist einfach: There is no MONEY data type.

Der für Geldwerte am besten geeignete Datentyp wäre NUMBER (unter Verwendung einer geeigneten Skala). Da es sich um einen dezimalen Fließkommatyp handelt, ist es für Geldwerte besser geeignet als die binären Fließkommatypen BINARY_FLOAT und BINARY_DOUBLE.

Beachten Sie jedoch, dass Sie immer noch die Eingabestring £00,000.000 in Ihrem Frontend Parse benötigen und es als numerischer Wert zum Backend senden.

+0

Okay und was wäre das korrekte Format für einen Geldwert von £ 00,000.00? – user3686991

+0

ein Geldwert von Null ist einfach "0". –