Как преобразовать строку в целое число с помощью SQL-запроса на SQL Server 2005?
Как преобразовать строку в целое число с помощью SQL-запроса на SQL Server 2005?
Ответы:
Вы можете использовать CAST или 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()
может привести к некоторым извращенным результатам. Он вернет TRUE для строки «-.», Что все равно вызовет ошибку при попытке привести его к числу.
Также имейте в виду, что при преобразовании из числовой строки, то есть '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
Начиная с SQL Server 2012, вы можете использовать TRY_PARSE или TRY_CONVERT .
SELECT TRY_PARSE(MyVarcharCol as int)
SELECT TRY_CONVERT(int, MyVarcharCol)
Попробуйте это, это сработало для меня в Афине:
cast(MyVarcharCol as integer)