Il peut arriver que vous deviez vérifier une colonne pour les valeurs non numériques. Par exemple, vous découvrez qu'une colonne est un varchar
alors qu'il devrait s'agir d'une colonne numérique.
Cela se fait facilement dans SQL Server avec le ISNUMERIC()
fonction.
Exemple de données
Supposons que nous créons une table avec un varchar
colonne et insérez les données comme suit :
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;
Résultat :
+-----------+ | 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 plupart des valeurs ci-dessus sont numériques, même si elles sont dans un varchar
colonne. Les exemples suivants vérifient cette colonne pour les valeurs non numériques.
Le ISNUMERIC()
Fonction
SELECT c1
FROM t1
WHERE ISNUMERIC(c1) <> 1;
Résultat :
+-----------+ | c1 | |-----------| | a | | 9afc | | e7 | | +e0 | | Ten | | 5 Dollars | +-----------+
Ici, j'ai utilisé le ISNUMERIC()
fonction avec la fonction Différent de (<>
) pour vérifier les valeurs qui ne sont pas numériques.
Il peut y avoir une bonne raison pour qu'une colonne soit varchar
au lieu de numérique. Mais si ce n'est pas le cas, les valeurs doivent être converties en leurs équivalents numériques, puis le type de données de la colonne doit être remplacé par un type numérique. Cela aidera à maintenir l'intégrité des données de la base de données.
Rechercher des valeurs qui ne contiennent aucun nombre
Nous pouvons utiliser la requête suivante pour renvoyer toutes les lignes qui ne contiennent pas de valeurs numériques.
SELECT c1
FROM t1
WHERE c1 NOT LIKE '%[0-9]%';
Résultat :
+------+ | c1 | |------| | a | | Ten | +------+
Il s'agit d'un résultat différent de l'exemple précédent, car nous recherchons simplement toutes les valeurs qui ne contiennent toutes les données numériques. Dans l'exemple précédent, nous recherchions les valeurs qui ne sont pas numériques.