Legen Sie dezimal mit Komma interpretiert wird, als zwei Werte
Ich bin momentan dabei, ein ssrs report und die Schaffung eines mockdata sql-Skript.
In dem script, das ich einfügen möchte, die einen decimal-Wert etwa so:
declare @tempTable table(
aString varchar(50),
aDecimal decimal(5,2)
)
insert into @tempTable
values ("somestring", 1,23)
Dem Werte nach "classextender" sind eigentlich ein decimal-Wert mit einem Komma als Dezimaltrennzeichen. SQL interpretiert diese als separate Werte, obwohl, und daher wirft eine Fehlermeldung über zu viele Werte für die Anzahl der Spalten. Wie gehen Sie darüber?
UPDATE
Um es klarzustellen: ich bin in einer region, wo '.' ist ein Trennzeichen für Tausender und", " ist ein Dezimaltrennzeichen.
Setzen Sie zwischen den Anführungszeichen funktioniert auch nicht. Es gibt mir die Error converting data type varchar to numeric
Nachricht
- Kannst du nicht mit einem
.
? - das wäre für das Tausender-Trennzeichen. Also je nach Kultur: keine
- das Tausendertrennzeichen ist es nur eine Formatierung der Trennzeichen, die Ihre Daten nicht speichern, die mit diesem separator. Formatieren Sie es, wie Sie wollen, in der Anwendung, verbrauchen diese Datenbank, wenn displying es an den Benutzer.
- und andere: ich habe aktualisiert mein OP zu klären, meine regionalen Einstellungen
- Sicherstellen, dass die script-Sprache ist auf Englisch (ich denke, es ist bereits), und verwenden Sie 'normal', Trennzeichen Punkt (1.23). In unserer Kultur wird das Komma verwendet, aber alle unsere Skripte laufen in Englisch.
- Wie werden Sie die Bereitstellung der Wert, um Ihre insert-Anweisung. Bauen Sie die Anweisung dynamisch (man sollte das nicht tun) oder sind Sie mit einem parameter vom Typ string (don ' T tun, entweder) ...oder?
- Es ist ein großes fest programmierte script, weil ich benutze es als mock-dataset für meine MS melden. Nichts, was ich benutzen werde, nach der design Phase 😉
Du musst angemeldet sein, um einen Kommentar abzugeben.
Festlegen einer Anzahl als Konstante in ein SQL-Skript, die Sie befolgen sollten, SQL syntax Regeln, nicht locale-Einstellungen. Und die syntax schreibt vor, dass Sie eine
.
als dezimal-Trennzeichen. Für die Tausender-Trennzeichen, die Sie überhaupt nicht verwendet werden.Beachten Sie, dass dies nur über den Codierung Ihre Daten in einem script, nicht anzeigen Sie. Die Darstellung ist, wo Sie Ihre locale-Einstellungen nicht egal, und wenn Sie in Ordnung sind, solltest du deine Ausgabe entsprechend formatiert: dezimal-Trennzeichen wie Komma, Tausender-Zeiten.
Kommas verwendet werden, um separate Werte beim einfügen von SQL. Ich weiß nicht, welche Art von Feld das ist, aber wenn es ein INT oder DECIMAL-es wird nicht funktionieren.
Um es zu erhalten arbeitend, setzen Sie Anführungszeichen um Sie herum, etwa so:
Am besten wäre:
1.23
. Warum? Denn das ist, wie die db-Datentyp decimal definiert ist. Verwenden Sie Punkt als Komma und manipulieren Sie den Wert, wenn Sie ausgegeben werden. Ich bin sicher, es gibt einige Wege, Sie zu ersetzen.
mit,
.