Konvertieren einer Zeichenkette in int mit Sql-Abfrage

Wie konvertiert man eine Zeichenkette in eine ganze Zahl mit einer SQL-Abfrage auf SQL Server 2005?

Lösung

Sie können CAST oder CONVERT verwenden:

SELECT CAST(MyVarcharCol AS INT) FROM Table

SELECT CONVERT(INT, MyVarcharCol) FROM Table
Kommentare (4)

Beachten Sie auch, dass Sie bei der Konvertierung von numerischen Zeichenfolgen, z. B. "56.72" in INT, auf einen SQL-Fehler stoßen können.

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

Um dies zu umgehen, führen Sie einfach zwei Konvertierungen wie folgt durch:

STRING -> NUMERIC -> INT

oder

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

Beim Kopieren von Daten aus TabelleA in TabelleB erfolgt die Konvertierung implizit, so dass Sie die zweite Konvertierung nicht benötigen (wenn Sie auf die nächste INT abrunden möchten):

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

Ab SQL Server 2012 können Sie TRY_PARSE oder TRY_CONVERT verwenden.

SELECT TRY_PARSE(MyVarcharCol as int)

SELECT TRY_CONVERT(int, MyVarcharCol)
Kommentare (1)