Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Cara Mengembalikan Hanya Nilai Numerik di SQL Server

Di SQL Server, kita dapat menggunakan ISNUMERIC() berfungsi untuk mengembalikan nilai numerik dari kolom.

Sebagai alternatif, kami dapat menjalankan kueri terpisah untuk mengembalikan semua nilai yang berisi data numerik.

Contoh Data

Misalkan kita membuat tabel dengan varchar kolom, dan masukkan data sebagai berikut:

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;

Hasil:

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

Karena ini adalah varchar kolom, berisi data karakter. Ini dapat berisi data numerik, tetapi tidak disimpan sebagai tipe numerik. Oleh karena itu, kolom dapat berisi data tekstual dan numerik. Contoh berikut memeriksa kolom ini untuk nilai numerik.

ISNUMERIC() Fungsi

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

Hasil:

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

Di sini, saya menggunakan ISNUMERIC() fungsi bersama dengan Equal To (= ) operator untuk mengembalikan nilai numerik. Fungsi mengembalikan 1 ketika itu numerik dan 0 padahal tidak.

Menemukan Nilai yang Mengandung Angka

Kita dapat menggunakan kueri berikut untuk mengembalikan semua baris yang berisi nilai numerik (meskipun juga berisi karakter lain).

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

Hasil:

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

Ini adalah hasil yang berbeda dari contoh sebelumnya, karena kami hanya mencari semua nilai yang berisi data numerik apa pun. Pada contoh sebelumnya, kami sedang mencari nilai-nilai yang numerik.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lakukan while loop di SQL Server 2008

  2. Kolom yang dihitung di EF Code First

  3. Bagaimana saya bisa mengubah batasan kunci utama menggunakan sintaks SQL?

  4. Bagaimana cara menghapus karakter ASCII yang diperluas dari string di T-SQL?

  5. Cara mengelompokkan berdasarkan bulan dari bidang Tanggal menggunakan sql