Converter uma string em int usando consulta sql

169

Como converter uma string em número inteiro usando a consulta SQL no SQL Server 2005?

Rahul Vyas
fonte

Respostas:

297

Você pode usar CAST ou CONVERT :

SELECT CAST(MyVarcharCol AS INT) FROM Table

SELECT CONVERT(INT, MyVarcharCol) FROM Table
CMS
fonte
4
Como capturar / impedir a exceção quando um dos campos não é numérico? Eu teria esperado que converter a 0.
Chloe
40
Encontrado:select CASE WHEN ISNUMERIC('x') = 1 THEN CAST('x' AS INT) ELSE 0 END
Chloe
9
Apenas uma palavra: IsNumeric()pode produzir resultados perversos. Ele retornará TRUE para a string "-.", Que ainda causará um erro ao tentar convertê-la em um número.
Curt
3
IsNumeric será verdadeiro para cadeias com "-" somente se a cadeia for numérica, por exemplo "-5" ou "-20", será falso para cadeias como "5-", "-2-1". Então, se isNumeric () é verdadeira conversão, em seguida, não deve lançar qualquer exceção
Pratyush Dhanuka
11

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
Steven de Salas
fonte
8

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)
Örjan Jämte
fonte
Definitivamente, não é a resposta certa para a pergunta original, uma vez que era em relação ao SQL Server 2005, mas como é 2019 e menos pessoas estão vinculadas a uma versão tão antiga do SQL Server, essa resposta é definitivamente útil.
Shaune
-2

Experimente este, funcionou para mim em Athena:

cast(MyVarcharCol as integer)
ashutosh singh
fonte