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)