2009-04-08 10 views

Antwort

199

Sie könnten CAST or CONVERT verwenden:

SELECT CAST(MyVarcharCol AS INT) FROM Table 

SELECT CONVERT(INT, MyVarcharCol) FROM Table 
+3

Wie kann ich die Ausnahme abfangen/verhindern, wenn eines der Felder nicht numerisch ist? Ich hätte erwartet, dass es in 0 konvertiert. – Chloe

+30

Gefunden: 'wählen CASE WENN ISNUMERIC ('x') = 1 DANN CAST ('x' AS INT) SONST 0 END' – Chloe

+8

Nur ein Wort:' IsNumeric() 'kann produzieren einige perverse Ergebnisse. Es wird TRUE für die Zeichenfolge "-." Zurückgegeben, was immer noch zu einem Fehler führt, wenn Sie versuchen, es auf eine Zahl zu übertragen. – Curt

8

auch bewusst sein, dass, wenn sie von Ziffernfolge dh '56.72' Umwandlung Sie gegen einen SQL-Fehler kommen auf INT kann.

Conversion failed when converting the varchar value '56.72' to data type int. 

Um dies zu umgehen nur tun zwei Konvertiten wie folgt:

STRING -> Numerisch -> INT

oder

SELECT CAST(CAST (MyVarcharCol AS NUMERIC(19,4)) AS INT) 

beim Kopieren der Daten von TableA zu TableB, die Konvertierung ist implizit, so dass Sie die zweite Konvertierung nicht benötigen (wenn Sie glücklich sind, zum nächsten INT zu runden):

INSERT INTO TableB (MyIntCol) 
SELECT CAST(MyVarcharCol AS NUMERIC(19,4)) as [MyIntCol] 
FROM TableA 
Verwandte Themen