Puede haber ocasiones en las que necesite verificar una columna en busca de valores no numéricos. Por ejemplo, descubre que una columna es un varchar
columna cuando en realidad debería ser una columna numérica.
Esto se hace fácilmente en SQL Server con ISNUMERIC()
función.
Datos de muestra
Supongamos que creamos una tabla con un varchar
columna e inserte los datos de la siguiente manera:
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 | +-----------+
La mayoría de los valores anteriores son numéricos, aunque están en un varchar
columna. Los siguientes ejemplos verifican esta columna para valores no numéricos.
El ISNUMERIC()
Función
SELECT c1
FROM t1
WHERE ISNUMERIC(c1) <> 1;
Resultado:
+-----------+ | c1 | |-----------| | a | | 9afc | | e7 | | +e0 | | Ten | | 5 Dollars | +-----------+
Aquí, utilicé ISNUMERIC()
junto con la función No es igual a (<>
) operador para verificar valores que no son numéricos.
Puede haber una buena razón para que una columna sea varchar
en lugar de numérico. Pero si no, los valores deben convertirse a sus equivalentes numéricos y luego el tipo de datos de la columna debe cambiarse a un tipo numérico. Esto ayudará a mantener la integridad de los datos de la base de datos.
Encuentre valores que no contengan números
Podemos usar la siguiente consulta para devolver todas las filas que no contienen valores numéricos.
SELECT c1
FROM t1
WHERE c1 NOT LIKE '%[0-9]%';
Resultado:
+------+ | c1 | |------| | a | | Ten | +------+
Este es un resultado diferente al del ejemplo anterior, porque simplemente buscamos todos los valores que no contengan cualquier dato numérico. En el ejemplo anterior, buscábamos aquellos valores que no son numéricos.