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?

Respostas:


297

Você pode usar CAST ou CONVERT :

SELECT CAST(MyVarcharCol AS INT) FROM Table

SELECT CONVERT(INT, MyVarcharCol) FROM Table

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

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)

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)
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.