В SQL Server можем да използваме ISNUMERIC()
функция за връщане на числови стойности от колона.
Като алтернатива можем да изпълним отделна заявка, за да върнем всички стойности, които съдържат числови данни.
Примерни данни
Да предположим, че създаваме таблица с varchar
колона и вмъкнете данни, както следва:
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;
Резултат:
+-----------+ | 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 | +-----------+
Виждайки, че това е varchar
колона съдържа символни данни. Може да съдържа числови данни, но не се съхранява като числов тип. Следователно колоната може да съдържа както текстови, така и цифрови данни. Следните примери проверяват тази колона за числови стойности.
ISNUMERIC()
Функция
SELECT c1
FROM t1
WHERE ISNUMERIC(c1) = 1;
Резултат:
+--------+ | c1 | |--------| | 0 | | 1 | | +1 | | -1 | | +1 | | 00.00 | | 73.45 | | +73.45 | | -73.45 | | .246 | | -.34e7 | | 12.e-3 | | 1.2e+4 | +--------+
Тук използвах ISNUMERIC()
функция заедно с Equal To (=
), за да върне стойностите, които са числови. Функцията връща 1
когато е числово и 0
когато не е.
Намерете стойности, които съдържат числа
Можем да използваме следната заявка, за да върнем всички редове, които съдържат числови стойности (дори ако съдържат и други знаци).
SELECT c1
FROM t1
WHERE c1 LIKE '%[0-9]%';
Резултат:
+-----------+ | 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 | +-----------+
Това е различен резултат от предишния пример, защото просто търсим всички стойности, които съдържат всякакви цифрови данни. В предишния пример търсихме тези стойности, които са числови.