Cast ou converter varchar no servidor SQL para INT
estou a tentar converter o seguinte para um inteiro para poder fazer cálculos, de 123.456.789
para 123456789
.
CAST([Total number] AS INT)
ou
CONVERT(int, [Total number])
então eu recebo um erro
a conversão falhou ao converter o valor varchar '123.456.789' para o tipo de dados int.
0
4 answers
Declare @val varchar(100)='123.456.789'
SELECT CAST (REPLACE (@val,'.','') AS INT) As Intval
Assumindo que o ponto não é um separador de partes fractional e que o seu número é inteiro ( não flutuante / decimal) - pode apenas remover pontos do seu texto antes da conversão de algo do género:
CAST(replace([Total number], '.', '') AS int)
3
Author: Andy Korneyev, 2017-05-23 11:13:34
Pode usar o try_convert ou o try_cast, mesmo que tenha alguns caracteres especiais, irá devolver nulo nesse caso
Select try_convert(int, replace([Total number], '.', ''))
0
Author: Kannan Kandasamy, 2017-05-23 11:32:40
Este é o seu requisito abaixo
Declare @val TABLE (ID INT IDENTITY,Val varchar(100))
INSERT INTO @val
SELECT '356.345.789' UNION ALL
SELECT '123.456.333' UNION ALL
SELECT '444.124.444' UNION ALL
SELECT '347.456.555' UNION ALL
SELECT '123.666.789' UNION ALL
SELECT '678.432.789' UNION ALL
SELECT '789.456.111' UNION ALL
SELECT '123.457.123' UNION ALL
SELECT '333.111.789'
SELECT ROW_NUMBER()OVER(Order by (SELECT 1)) AS Rno,
CAST(REPLACE (Val,'.','') AS INT) As Intval
FROM @val