ich diese Legacy-Code haben, die andernfalls gestartet ...Konvertierung fehlgeschlagen beim Konvertieren des Nvarchar-Werts '7575932.' den Datentyp int
UPDATE B2C
SET B2C.dborderid = A.order_number__c
FROM b2csf B2C
JOIN Alemania A ON B2C.actualid = A.salesforce_id
bekomme ich diesen Fehler:
Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the nvarchar value '7201799-' to data type int.
Ich ging weiter und verändert es an:
UPDATE B2C
SET B2C.dborderid = (CASE
WHEN Isnumeric (a.order_number__c) = 1
THEN CAST(a.order_number__c AS INT)
END)
FROM b2csf B2C
JOIN Alemania A ON B2C.actualid = A.salesforce_id
Und Jetzt bekomme ich
Msg 245, Level 16, State 1, Line 1
Conversion failed when converting the nvarchar value '7575932.' to data type int.
Meine Fragen sind nun:
wie kann ich diesen Fehler zu vermeiden? Es macht mir nichts aus, zum Beispiel "7575932" zu verlieren. Wert. (Im Idealfall würde Ich mag ‚7575932.‘ Wert verwerfen)
Ich versuche mein Bestes, Best Practices zu folgen ... ist die Spalte
DBorderid
zunvarchar
die einzigen „best practice“ Alternative zu ändern?
(Ich bin mit SQL Server 2008)
es funktioniert großartig, danke, jetzt erhalte ich: Msg 248, Ebene 16, Status 1, Zeile 2 Bei der Konvertierung des Nvarchar-Wertes '3545427103' ist eine int-Spalte übergelaufen. Die Anweisung wurde beendet. Gibt es eine Inline-elegante/Best-Practice-Lösung? – Chicago1988
@ Chicago1988 wie wäre es mit dieser zusätzlichen Bedingung 'Fall bei Besetzung ('3545427103' als numerisch (38,0)) zwischen -2147483648 und 2147483648 dann ...' – Max
klingt gut, aber schlechte Daten werden kommen ... So ist es wird irgendwann wieder scheitern ... Ich kann nicht glauben, dass ich keine Lösung für diese einfache Sache finden kann ... – Chicago1988