Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak zwrócić tylko wartości liczbowe w SQL Server

W SQL Server możemy użyć ISNUMERIC() funkcja zwracająca wartości liczbowe z kolumny.

Alternatywnie możemy uruchomić oddzielne zapytanie, aby zwrócić wszystkie wartości zawierające dane liczbowe.

Przykładowe dane

Załóżmy, że tworzymy tabelę z varchar kolumnę i wstawiaj dane w następujący sposób:

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;

Wynik:

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

Widząc, że jest to varchar kolumna zawiera dane znakowe. Może zawierać dane liczbowe, ale nie jest przechowywany jako typ liczbowy. Dlatego kolumna może zawierać zarówno dane tekstowe, jak i liczbowe. Poniższe przykłady sprawdzają tę kolumnę pod kątem wartości liczbowych.

ISNUMERIC() Funkcja

SELECT c1
FROM t1
WHERE ISNUMERIC(c1) = 1;

Wynik:

+--------+
| c1     |
|--------|
| 0      |
| 1      |
| +1     |
| -1     |
| +1     |
| 00.00  |
| 73.45  |
| +73.45 |
| -73.45 |
| .246   |
| -.34e7 |
| 12.e-3 |
| 1.2e+4 |
+--------+

Tutaj użyłem ISNUMERIC() funkcja wraz z równym (= ), aby zwrócić wartości liczbowe. Funkcja zwraca 1 gdy jest to liczba i 0 kiedy tak nie jest.

Znajdź wartości zawierające liczby

Możemy użyć następującego zapytania, aby zwrócić wszystkie wiersze zawierające wartości liczbowe (nawet jeśli zawierają one również inne znaki).

SELECT c1
FROM t1 
WHERE c1 LIKE '%[0-9]%';

Wynik:

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

To inny wynik niż w poprzednim przykładzie, ponieważ szukamy po prostu wszystkich wartości, które zawierają dowolne dane liczbowe. W poprzednim przykładzie szukaliśmy wartości liczbowych.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak przeglądać dzienniki transakcji w SQL Server 2008

  2. Oracle:czy istnieje narzędzie do śledzenia zapytań, takie jak Profiler dla serwera sql?

  3. warunkowe ograniczenie unikatowe

  4. dołącz do kolumny danych rozdzielanych przecinkami

  5. Jak znaleźć wszystkie tabele z kolumną tożsamości w bazie danych SQL Server — SQL Server / T-SQL Tutorial, część 45