Como converter uma string em número inteiro usando a consulta SQL no SQL Server 2005?
Como converter uma string em número inteiro usando a consulta SQL no SQL Server 2005?
Respostas:
Você pode usar CAST ou 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()
pode produzir resultados perversos. Ele retornará TRUE para a string "-.", Que ainda causará um erro ao tentar convertê-la em um número.
Lembre-se também de que, ao converter de seqüência numérica, ou seja, '56.72'
para INT, você pode encontrar um erro SQL.
Conversion failed when converting the varchar value '56.72' to data type int.
Para contornar isso, faça dois conversos da seguinte maneira:
STRING -> NUMÉRICO -> INT
ou
SELECT CAST(CAST (MyVarcharCol AS NUMERIC(19,4)) AS INT)
Ao copiar dados da Tabela A para a Tabela B, a conversão está implícita, portanto você não precisa da segunda conversão (se desejar arredondar para a INT mais próxima):
INSERT INTO TableB (MyIntCol)
SELECT CAST(MyVarcharCol AS NUMERIC(19,4)) as [MyIntCol]
FROM TableA
A partir do SQL Server 2012, você pode usar TRY_PARSE ou TRY_CONVERT .
SELECT TRY_PARSE(MyVarcharCol as int)
SELECT TRY_CONVERT(int, MyVarcharCol)
Experimente este, funcionou para mim em Athena:
cast(MyVarcharCol as integer)