Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да върнете само числови стойности в SQL Server

В 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 |
+-----------+

Това е различен резултат от предишния пример, защото просто търсим всички стойности, които съдържат всякакви цифрови данни. В предишния пример търсихме тези стойности, които са числови.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Извършете анализ на продукта с помощта на пълнотекстово търсене на SQL Server. Част 1

  2. Как да коригирате „Сървърът не е конфигуриран за ДОСТЪП ДО ДАННИ“ в SQL Server

  3. Вмъкване на List<> в таблицата на SQL Server

  4. Как да изберете последния запис на таблица в SQL?

  5. Инсталиране на примери на база данни AdventureWorks в Microsoft SQL Server 2012