Frage

Ich erhalte einige Argumente in einer gespeicherten Prozedur. Diese Argumente sind NVARCHAR ist.

Ich habe ein Problem, wenn ich brauche, um einige dieser Werte zu FLOATS werfen, weil sie wie z empfangen werden.

@ VALUE1 NVARCHAR (100)

ERKLÄREN @ChangedValue SET @ChangedValue = CAST (@ Value1 AS FLOAT)

z. @ Value1 = "0.001"

Gibt mir ein Problem, da es "0,001" erwartet

Ich kann nicht das Format der Eingabe ändern, aber ich kann es irgendwie auf der Seite SQL-Servers ändern? Durch die Änderung all „“ zu „“ stattdessen?

Mit freundlichen Grüßen, Kenn

War es hilfreich?

Lösung

Sie könnten verwenden @VALUE1 = REPLACE(@VALUE1, ',', '.')

Dies scheint eine schreckliche Sache aber zu tun!

Andere Tipps

Wie Mitch sagte, es nicht so gut klingt, und es sei viel besser es die vorgesehenen Parameter vom Typ float waren an erster Stelle. Er gab Ihnen die Lösung, die für jetzt Ihr Problem löst, aber als er darauf hinwies, Sie können in einige Schwierigkeiten in der Zukunft erhalten.

Ich gehe davon aus, dass das Verfahren durch einen Anwendungscode aufgerufen wird, und ich würde vermuten, dass diese Zahlen Benutzereingaben sind. Wenn das der Fall ist, dann sollte die Umstellung auf Anwendungsebene geschehen, wie die Pflege von lokalen Einstellungen nehmen würde und das ist der einzige Ort, die Kontrolle über das Format der Benutzereingabe hat.

Ich bin nicht vertraut mit Ihren Daten, aber stellen Sie sicher, dass Sie alle Werte nicht haben, die wie 1000 mit einem Komma gültig sind. Ändern dass zu 1.000 Verwendung ersetzen Änderungen der tatsächlichen Anzahl beteiligt drastisch.

Ich würde die Benutzeroberfläche beheben, so dass ungültige Nummern können nicht im Feld platziert werden. Ich würde auch eine Einschränkung für die Tabelle in der Datenbank setzen, die die Anzahl erfordern in einem bestimmten Bereich oder eine gültige Zahl zu sein, wenn Sie die Daten bereinigt. Auf diese Weise schlechte Daten nicht in das Feld bekommen zu beginnen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top