Jak przekonwertować ciąg znaków na liczbę całkowitą za pomocą zapytania SQL w programie SQL Server 2005?
Jak przekonwertować ciąg znaków na liczbę całkowitą za pomocą zapytania SQL w programie SQL Server 2005?
Odpowiedzi:
Możesz użyć CAST lub CONVERT :
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()
może przynieść pewne przewrotne skutki. Zwróci TRUE dla łańcucha „-.”, Co nadal będzie powodować błąd podczas próby rzutowania go na liczbę.
Należy również pamiętać, że podczas konwersji z ciągu liczbowego, tj. '56.72'
Na INT, możesz napotkać błąd SQL.
Conversion failed when converting the varchar value '56.72' to data type int.
Aby to obejść, wykonaj dwie konwersje w następujący sposób:
STRING -> NUMERIC -> INT
lub
SELECT CAST(CAST (MyVarcharCol AS NUMERIC(19,4)) AS INT)
Podczas kopiowania danych z TableA do TableB konwersja jest niejawna, więc nie potrzebujesz drugiej konwersji (jeśli jesteś zadowolony z zaokrąglenia w dół do najbliższej INT):
INSERT INTO TableB (MyIntCol)
SELECT CAST(MyVarcharCol AS NUMERIC(19,4)) as [MyIntCol]
FROM TableA
Począwszy od SQL Server 2012, można użyć TRY_PARSE lub TRY_CONVERT .
SELECT TRY_PARSE(MyVarcharCol as int)
SELECT TRY_CONVERT(int, MyVarcharCol)
Wypróbuj ten, zadziałał dla mnie w Atenie:
cast(MyVarcharCol as integer)