In SQL Server kunnen we de ISNUMERIC()
. gebruiken functie om numerieke waarden uit een kolom te retourneren.
We kunnen ook een aparte query uitvoeren om alle waarden te retourneren die numerieke gegevens bevatten.
Voorbeeldgegevens
Stel dat we een tabel maken met een varchar
kolom en voeg de gegevens als volgt in:
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;
Resultaat:
+-----------+ | 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 | +-----------+
Aangezien dit een varchar
. is kolom, het bevat tekengegevens. Het kan numerieke gegevens bevatten, maar het wordt niet opgeslagen als een numeriek type. Daarom kan de kolom zowel tekstuele als numerieke gegevens bevatten. De volgende voorbeelden controleren deze kolom op numerieke waarden.
De ISNUMERIC()
Functie
SELECT c1
FROM t1
WHERE ISNUMERIC(c1) = 1;
Resultaat:
+--------+ | c1 | |--------| | 0 | | 1 | | +1 | | -1 | | +1 | | 00.00 | | 73.45 | | +73.45 | | -73.45 | | .246 | | -.34e7 | | 12.e-3 | | 1.2e+4 | +--------+
Hier gebruikte ik de ISNUMERIC()
functie samen met de gelijk aan (=
) operator om de waarden te retourneren die numeriek zijn. De functie retourneert 1
wanneer het numeriek is en 0
wanneer dat niet het geval is.
Zoek waarden die getallen bevatten
We kunnen de volgende query gebruiken om alle rijen te retourneren die numerieke waarden bevatten (zelfs als ze ook andere tekens bevatten).
SELECT c1
FROM t1
WHERE c1 LIKE '%[0-9]%';
Resultaat:
+-----------+ | 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 | +-----------+
Dit is een ander resultaat dan het vorige voorbeeld, omdat we gewoon op zoek zijn naar alle waarden die bevatten eventuele numerieke gegevens. In het vorige voorbeeld waren we op zoek naar die waarden die numeriek zijn.