Преобразование строки в int с помощью SQL-запроса

Как преобразовать строку в целое с помощью SQL-запроса на SQL Server 2005?

Ответ 1

Вы можете использовать CAST или CONVERT:

SELECT CAST(MyVarcharCol AS INT) FROM Table

SELECT CONVERT(INT, MyVarcharCol) FROM Table

Ответ 2

Также имейте в виду, что при преобразовании из числовой строки, т.е. '56.72' в INT, вы можете столкнуться с ошибкой SQL.

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

Чтобы обойти это, просто сделайте два преобразования следующим образом:

STRING → NUMERIC → INT

или

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

При копировании данных из TableA в TableB преобразование неявно, поэтому вам не нужен второй конвертировать (если вы счастливы округлить до ближайшего INT):

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

Ответ 3

Начиная с SQL Server 2012, вы можете использовать TRY_PARSE или TRY_CONVERT.

SELECT TRY_PARSE(MyVarcharCol as int)

SELECT TRY_CONVERT(int, MyVarcharCol)

Ответ 4

попробуйте этот, который он работал для меня в акте Athena (MyVarcharCol как целое)