2016-07-04 24 views
3

Mein Problem ist, dass mein Kunde seinen SQL Server auf einer Windows-Box ausführt und die Ländereinstellungen auf "Deutschland" gesetzt sind.SQL INSERT INTO: Komma als Dezimalzahl

Dies bedeutet, ein Dezimalpunkt ist kein Punkt ., es ist ein Komma ,!

einen doppelten Wert in die Datenbank einfügen funktioniert wie dieser

INSERT INTO myTable (myPrice) VALUES (16,5) 

feine Arbeiten, so weit.

Das Problem kommt, wenn es mehr als ein Wert mit Dezimalstellen in der Aussage wie

INSERT INTO myTable (myPrice, myAmount) VALUES (16,5,10) 

ich den Fehler ist

Anzahl der Abfragewerte und Zielfelder sind nicht die gleiche .

Kann ich die Werte irgendwie "abgrenzen"? Versucht, Klammern hinzuzufügen, aber das funktioniert nicht.

Leider kann ich die Spracheinstellungen des Betriebssystems oder der Datenbank nicht ändern, da ich gerade einige Add-Ons zu einer bestehenden Anwendung schreibe.

Vielen Dank! ev

+3

Ich finde es schwer zu glauben, dass zuerst einfügen funktioniert. –

+1

Sie können sie nicht begrenzen. Warum nicht einfach die Werte mit Dezimalpunkt anstelle von Komma übergeben? Keine Notwendigkeit, dafür eine andere Methode zu hacken. – DavidG

+0

@DavidG Er sagt, dass es nicht in Dezimal sein sollte. in Deutschland, sie verwenden Komma anstelle von Dezimal – Shank

Antwort

1

Sie müssen die Daten in dem von der Datenbank zugelassenen Format speichern. Selbst wenn Sie Daten mit Komma eingeben ... Sie könnten numerische Berechnungen verlieren.

Wenn ich solche Situation bekomme .. Ich werde prüfen, ob Komma nur für die Sichtbarkeit erforderlich ist .. dann würde ich Werte im Komma-Format anzeigen, während sie im Dezimalformat speichern.

So können Daten einfach numerisch verarbeitet werden. Aber müssen Sie es nur für UI oder Display hin und her wechseln.

Darauf basierend können Sie Ihre Situation bei Bedarf detaillierter beschreiben.

EDIT: Um meine Theorie zu überprüfen, können Sie überprüfen, ob diese Insert-Anweisung 165 oder 16.5 in die Datenbank eingefügt hat.

INSERT INTO myTable (myPrice) VALUES (16,5); 
    select from mytable where myprice <17; 
+0

danke für Ihren Vorschlag. –

+0

Wenn diese Antwort hilfreich war, bitte abstimmen. Und teile die Auflösung. –