Data de postagem: Jun 10, 2011 2:43:14 PM
Problema do aluno: Trabalho com SQL Server e preciso validar se um campo de tabela, com o datatype varchar(14), é numérico. Usei o isNumeric(campo), mas ele retorna 1 (numérico) quando o valor do campo é ‘1e2′ ou ‘1d2′, dentre alguns outros.
Solução: Primeiro, faremos um pequeno teste usando a função isNumeric:
DECLARE @X VARCHAR(14)
SET @X = ‘1000′
SELECT @X AS ‘VALOR’, ISNUMERIC(@X) AS ‘NUMÉRICO?’, CONVERT(INT, @X) AS ‘INTEIRO’, CONVERT(FLOAT, @X) AS ‘FLOAT’
SET @X = ‘ABC’
SELECT @X AS ‘VALOR’, ISNUMERIC(@X) AS ‘NUMÉRICO?’, ‘NÃO CONVERTE’ AS ‘INTEIRO’, ‘NÃO CONVERTE’ AS ‘FLOAT’
SET @X = ‘1D5′
SELECT @X AS ‘VALOR’, ISNUMERIC(@X) AS ‘NUMÉRICO?’, ‘NÃO CONVERTE’ AS ‘INTEIRO’, CONVERT(FLOAT, @X) AS ‘FLOAT’
SET @X = ‘2E2′
SELECT @X AS ‘VALOR’, ISNUMERIC(@X) AS ‘NUMÉRICO?’, ‘NÃO CONVERTE’ AS ‘INTEIRO’, CONVERT(FLOAT, @X) AS ‘FLOAT’
SET @X = ‘1.7E3′
SELECT @X AS