Dans SQL Server, nous pouvons utiliser le ISNUMERIC()
fonction pour renvoyer des valeurs numériques à partir d'une colonne.
Nous pouvons également exécuter une requête distincte pour renvoyer toutes les valeurs contenant des données numériques.
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 | +-----------+
Vu qu'il s'agit d'un varchar
colonne, elle contient des données textuelles. Il peut contenir des données numériques, mais il n'est pas stocké en tant que type numérique. Par conséquent, la colonne peut contenir à la fois des données textuelles et numériques. Les exemples suivants vérifient cette colonne pour les valeurs numériques.
Le ISNUMERIC()
Fonction
SELECT c1
FROM t1
WHERE ISNUMERIC(c1) = 1;
Résultat :
+--------+ | c1 | |--------| | 0 | | 1 | | +1 | | -1 | | +1 | | 00.00 | | 73.45 | | +73.45 | | -73.45 | | .246 | | -.34e7 | | 12.e-3 | | 1.2e+4 | +--------+
Ici, j'ai utilisé le ISNUMERIC()
fonction avec la fonction Égal à (=
) pour renvoyer les valeurs qui sont numériques. La fonction renvoie 1
quand c'est numérique et 0
quand ce n'est pas le cas.
Rechercher des valeurs contenant des nombres
Nous pouvons utiliser la requête suivante pour renvoyer toutes les lignes contenant des valeurs numériques (même si elles contiennent également d'autres caractères).
SELECT c1
FROM t1
WHERE c1 LIKE '%[0-9]%';
Résultat :
+-----------+ | 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 | +-----------+
Il s'agit d'un résultat différent de l'exemple précédent, car nous recherchons simplement toutes les valeurs qui contiennent toutes les données numériques. Dans l'exemple précédent, nous recherchions les valeurs numériques.