I SQL Server kan vi använda ISNUMERIC()
funktion för att returnera numeriska värden från en kolumn.
Vi kan alternativt köra en separat fråga för att returnera alla värden som innehåller numerisk data.
Exempeldata
Anta att vi skapar en tabell med en varchar
kolumn och infoga data enligt följande:
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 | +-----------+
Eftersom detta är en varchar
kolumnen innehåller den teckendata. Den kan innehålla numerisk data, men den lagras inte som en numerisk typ. Därför kan kolumnen innehålla både textdata och numerisk. Följande exempel kontrollerar den här kolumnen för numeriska värden.
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 | +--------+
Här använde jag ISNUMERIC()
funktion tillsammans med Lika med (=
) för att returnera värdena som är numeriska. Funktionen returnerar 1
när det är numeriskt och 0
när det inte är det.
Hitta värden som innehåller siffror
Vi kan använda följande fråga för att returnera alla rader som innehåller numeriska värden (även om de också innehåller andra tecken).
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 | +-----------+
Detta är ett annat resultat än det föregående exemplet, eftersom vi helt enkelt letar efter alla värden som innehåller alla numeriska data. I det föregående exemplet letade vi efter de värden som är numeriska.