Wie konvertiere ich eine Zeichenfolge mithilfe einer SQL-Abfrage unter SQL Server 2005 in eine Ganzzahl?
Wie konvertiere ich eine Zeichenfolge mithilfe einer SQL-Abfrage unter SQL Server 2005 in eine Ganzzahl?
Antworten:
Sie können CAST oder CONVERT verwenden :
SELECT CAST(MyVarcharCol AS INT) FROM Table
SELECT CONVERT(INT, MyVarcharCol) FROM Table
select CASE WHEN ISNUMERIC('x') = 1 THEN CAST('x' AS INT) ELSE 0 END
IsNumeric()kann zu perversen Ergebnissen führen. Es wird TRUE für die Zeichenfolge "-." Zurückgegeben, was immer noch einen Fehler verursacht, wenn Sie versuchen, es in eine Zahl umzuwandeln.
'56.72'Beachten Sie auch, dass beim Konvertieren von einer numerischen Zeichenfolge, dh in INT, möglicherweise ein SQL-Fehler auftritt.
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)
Wenn Sie Daten von Tabelle A nach Tabelle B kopieren, ist die Konvertierung implizit, sodass Sie die zweite Konvertierung nicht benötigen (wenn Sie gerne auf das nächste INT abrunden möchten):
INSERT INTO TableB (MyIntCol)
SELECT CAST(MyVarcharCol AS NUMERIC(19,4)) as [MyIntCol]
FROM TableA
Ab SQL Server 2012 können Sie TRY_PARSE oder TRY_CONVERT verwenden .
SELECT TRY_PARSE(MyVarcharCol as int)
SELECT TRY_CONVERT(int, MyVarcharCol)
Probieren Sie dieses aus, es hat bei mir in Athena funktioniert:
cast(MyVarcharCol as integer)