No SQL Server, podemos usar o
ISNUMERIC()
função para retornar valores numéricos de uma coluna. Alternativamente, podemos executar uma consulta separada para retornar todos os valores que contêm dados numéricos.
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 | +-----------+
Visto que este é um
varchar
coluna, ela contém dados de caracteres. Ele pode conter dados numéricos, mas não é armazenado como um tipo numérico. Portanto, a coluna pode conter dados textuais e numéricos. Os exemplos a seguir verificam esta coluna para valores numéricos. O ISNUMERIC()
Função
SELECT c1
FROM t1
WHERE ISNUMERIC(c1) = 1;
Resultado:
+--------+ | c1 | |--------| | 0 | | 1 | | +1 | | -1 | | +1 | | 00.00 | | 73.45 | | +73.45 | | -73.45 | | .246 | | -.34e7 | | 12.e-3 | | 1.2e+4 | +--------+
Aqui, usei o
ISNUMERIC()
função junto com o igual a (=
) para retornar os valores numéricos. A função retorna 1
quando é numérico e 0
quando não é. Encontre valores que contenham números
Podemos usar a seguinte consulta para retornar todas as linhas que contêm valores numéricos (mesmo que também contenham outros caracteres).
SELECT c1
FROM t1
WHERE c1 LIKE '%[0-9]%';
Resultado:
+-----------+ | c1 | |-----------| | 0 | | 1 | | +1 | | -1 | | +1 | | 00.00 | | 73.45 | | +73.45 | | -73.45 | | .246 | | -.34e7 | | 12.e-3 | | 1.2e+4 | | 9afc | | e7 | | +e0 | | 5 Dollars | +-----------+
Este é um resultado diferente do exemplo anterior, porque estamos simplesmente procurando por todos os valores que contêm qualquer dado numérico. No exemplo anterior, estávamos procurando os valores numéricos.