In SQL Server possiamo usare ISNUMERIC()
funzione per restituire valori numerici da una colonna.
In alternativa, possiamo eseguire una query separata per restituire tutti i valori che contengono dati numerici.
Dati di esempio
Supponiamo di creare una tabella con un varchar
colonna e inserire i dati come segue:
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;
Risultato:
+-----------+ | 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 che questo è un varchar
colonna, contiene dati sui caratteri. Può contenere dati numerici, ma non è memorizzato come tipo numerico. Pertanto, la colonna può contenere sia dati testuali che numerici. Gli esempi seguenti controllano questa colonna per i valori numerici.
Il ISNUMERIC()
Funzione
SELECT c1
FROM t1
WHERE ISNUMERIC(c1) = 1;
Risultato:
+--------+ | c1 | |--------| | 0 | | 1 | | +1 | | -1 | | +1 | | 00.00 | | 73.45 | | +73.45 | | -73.45 | | .246 | | -.34e7 | | 12.e-3 | | 1.2e+4 | +--------+
Qui ho usato ISNUMERIC()
insieme alla funzione Uguale a (=
) per restituire i valori numerici. La funzione restituisce 1
quando è numerico e 0
quando non lo è.
Trova valori che contengono numeri
Possiamo utilizzare la seguente query per restituire tutte le righe che contengono valori numerici (anche se contengono anche altri caratteri).
SELECT c1
FROM t1
WHERE c1 LIKE '%[0-9]%';
Risultato:
+-----------+ | 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 | +-----------+
Questo è un risultato diverso rispetto all'esempio precedente, perché stiamo semplicemente cercando tutti i valori che contengono qualsiasi dato numerico. Nell'esempio precedente, stavamo cercando quei valori numerici.