Pode haver ocasiões em que você precise verificar uma coluna para valores não numéricos. Por exemplo, você descobre que uma coluna é um
varchar
coluna quando realmente deveria ser uma coluna numérica. Isso é feito facilmente no SQL Server com o
ISNUMERIC()
função. Dados de amostra
Suponha que criamos uma tabela com um
varchar
coluna e insira os dados da seguinte forma:DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (
c1 varchar(255)
);
INSERT INTO t1 (c1) VALUES
('0'),
('1'),
('+1'),
('-1'),
('+1'),
('00.00'),
('73.45'),
('+73.45'),
('-73.45'),
('.246'),
('-.34e7'),
('12.e-3'),
('1.2e+4'),
('a'),
('9afc'),
('e7'),
('+e0'),
('Ten'),
('5 Dollars');
SELECT * FROM t1;
Resultado:
+-----------+ | c1 | |-----------| | 0 | | 1 | | +1 | | -1 | | +1 | | 00.00 | | 73.45 | | +73.45 | | -73.45 | | .246 | | -.34e7 | | 12.e-3 | | 1.2e+4 | | a | | 9afc | | e7 | | +e0 | | Ten | | 5 Dollars | +-----------+
A maioria dos valores acima são numéricos, embora estejam em um
varchar
coluna. Os exemplos a seguir verificam esta coluna para valores não numéricos. O ISNUMERIC()
Função
SELECT c1
FROM t1
WHERE ISNUMERIC(c1) <> 1;
Resultado:
+-----------+ | c1 | |-----------| | a | | 9afc | | e7 | | +e0 | | Ten | | 5 Dollars | +-----------+
Aqui, usei o
ISNUMERIC()
função junto com o Not Equal To (<>
) para verificar valores que não são numéricos. Pode haver uma boa razão para uma coluna ser
varchar
em vez de numérico. Mas se não, os valores devem ser convertidos em seus equivalentes numéricos e, em seguida, o tipo de dados da coluna deve ser alterado para um tipo numérico. Isso ajudará a manter a integridade dos dados do banco de dados. Encontre valores que não contenham números
Podemos usar a seguinte consulta para retornar todas as linhas que não contêm valores numéricos.
SELECT c1
FROM t1
WHERE c1 NOT LIKE '%[0-9]%';
Resultado:
+------+ | c1 | |------| | a | | Ten | +------+
Este é um resultado diferente do exemplo anterior, porque estamos simplesmente procurando por todos os valores que não contêm qualquer dado numérico. No exemplo anterior, estávamos procurando os valores que não são numéricos.