Sie haben eine Funktion namens ActualWeightDIMS erstellt, die ganzzahlige Werte verkettet Stellt das tatsächliche Gewicht, die tatsächliche Länge, die Breite und die Höhe dar und wird als formatierte Zeichenfolge angezeigt. Wenn Sie die Funktion jedoch mit einer SELECT-Anweisung aufrufen, erhalten Sie eine Fehlermeldung, die auf einen Konvertierungsfehler bei der Konvertierung von Varchar „x“ in eine Ganzzahl hinweist.
Der Fehler ist auf die falsche Verkettung von Ganzzahlen durch die Funktion zurückzuführen Parameter mit Strings. SQL Server interpretiert das Hinzufügen einer Ganzzahl (@Actual_Dims_Lenght) zu einer Zeichenfolge ('x') als mathematische Operation, die zu einem Konvertierungsfehler führt.
Um dieses Problem zu beheben, müssen Sie Sie müssen Ihre ganzzahligen Parameter explizit in VARCHAR konvertieren, bevor Sie sie mit Zeichenfolgen verketten. So sollten Sie Ihre Funktion ändern:
SET @ActualWeightDIMS = CAST(@Actual_Dims_Lenght AS VARCHAR(16)) + 'x' + CAST(@Actual_Dims_Width AS VARCHAR(16)) + 'x' + CAST(@Actual_Dims_Height AS VARCHAR(16))
Durch die Umwandlung der ganzzahligen Parameter in VARCHAR stellen Sie sicher, dass der Vorgang als Zeichenfolgenverkettung behandelt wird, was zur gewünschten formatierten Ausgabe führt.
Sie haben erwähnt, dass Benutzer auf einer ASP.net-Seite nur entweder Gewicht oder Abmessungen auswählen können. Sie haben gefragt, ob Sie diese Validierung auf der SQL-Seite durchführen müssen. Obwohl dies nicht unbedingt erforderlich ist, kann es eine zusätzliche Sicherheitsebene bieten. Sie können der Datenbank eine CHECK-Einschränkung hinzufügen, um sicherzustellen, dass alle drei Dimensionswerte (Länge, Breite und Höhe) ungleich NULL sind, wenn der Benutzer Dimensionen auswählt. Dies würde verhindern, dass die Funktion falsche oder unvollständige Ergebnisse zurückgibt.
Das obige ist der detaillierte Inhalt vonWie verkette ich Zahlen und Zeichenfolgen in T-SQL korrekt, um Zahlen zu formatieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!