I SQL Server kan vi bruge ISNUMERIC()
funktion til at returnere numeriske værdier fra en kolonne.
Vi kan alternativt køre en separat forespørgsel for at returnere alle værdier, der indeholder numeriske data.
Eksempel på data
Antag, at vi opretter en tabel med en varchar
kolonne, og indsæt data som følger:
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;
Resultat:
+-----------+ | 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 | +-----------+
Da dette er en varchar
kolonne, den indeholder tegndata. Det kan indeholde numeriske data, men det gemmes ikke som en numerisk type. Derfor kan kolonnen indeholde både tekstdata og numeriske. Følgende eksempler kontrollerer denne kolonne for numeriske værdier.
ISNUMERIC()
Funktion
SELECT c1
FROM t1
WHERE ISNUMERIC(c1) = 1;
Resultat:
+--------+ | c1 | |--------| | 0 | | 1 | | +1 | | -1 | | +1 | | 00.00 | | 73.45 | | +73.45 | | -73.45 | | .246 | | -.34e7 | | 12.e-3 | | 1.2e+4 | +--------+
Her brugte jeg ISNUMERIC()
funktion sammen med Equal To (=
) operatør for at returnere de værdier, der er numeriske. Funktionen returnerer 1
når det er numerisk og 0
når det ikke er det.
Find værdier, der indeholder tal
Vi kan bruge følgende forespørgsel til at returnere alle rækker, der indeholder numeriske værdier (selvom de også indeholder andre tegn).
SELECT c1
FROM t1
WHERE c1 LIKE '%[0-9]%';
Resultat:
+-----------+ | 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 | +-----------+
Dette er et andet resultat end det foregående eksempel, fordi vi simpelthen leder efter alle værdier, der indeholder eventuelle numeriske data. I det foregående eksempel ledte vi efter de værdier, der er numeriske.