2017-06-14 5 views
0

ich die folgenden Fehler bekommenarithmetischen Überlauf beim Hinzufügen von Hyphen in VARCHAR Werte

Msg 8115, Ebene 16, Status 6, Linie 5 < br> Arithmetischer Überlauffehler bei dem Konvertieren varchar in den Datentyp numerisch.

Dies ist Beispiel DDL, die mein Problem veranschaulicht. Wie würde eine Abfrage eingerichtet, die dies erreichen kann?

Declare @Teetotal As Table (ramalad varchar(500)) 

Insert Into @Teetotal (ramalad) Values ('200.4'), ('300.12') 

Select ramalad 
,ManipulatedData = CAST(ramalad AS DECIMAL(16,2)) + ' - ' + (CAST(ramalad As DECIMAL(10,2))/25)*3 
FROM @Teetotal 
+0

Bearbeiten Sie Ihre Frage und zeigen die Ergebnisse, die Sie wollen. Der Code macht keinen Sinn. Warum sollten arithmetische Operationen für eine Zeichenfolge verwendet werden? –

Antwort

1

Dies geschieht, weil Sie eine Zeichenfolge in eine Dezimalzahl hinzuzufügen sind versuchen:

CAST(ramalad AS DECIMAL(16,2)) + ' - ' 

SQL nicht weiß, wie ' - ' in eine Zahl konvertieren, so dass er einen Fehler auslöst.

Vielleicht, was Sie wollen, ist:

ManipulatedData = ramalad + ' - ' + CAST((CAST(ramalad As DECIMAL(10,2))/25) *3 as varchar) 
+0

Ich muss den Bindestrich zwischen den beiden Werten haben. Gibt es eine Möglichkeit, es so zu kodieren, dass es möglich ist? – IcyPopTarts

+0

Ich aktualisierte die Antwort – uncoder

+0

ah - ja! Schön gemacht, mein Freund! – IcyPopTarts

Verwandte Themen