SQLite
 sql >> Teknologi Basis Data >  >> RDS >> SQLite

2 Cara untuk Mengembalikan Nilai Numerik dari Kolom Database SQLite

Contoh SQLite berikut hanya mengembalikan baris yang memiliki nilai numerik dalam kolom tertentu.

Contoh Data

Mari kita buat tabel dengan contoh data:

DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (
    c1
);

INSERT INTO t1 (c1) VALUES 
    (0),
    (1),
    (+1),
    (-1),
    (00.00),
    (73.45),
    (+73.45),
    (-73.45),
    (.246),
    (-.34e7),
    (12.e-3),
    (1.2e+4),
    ('Ten'),
    ('5 Dollars');

SELECT * FROM t1;

Tabel sekarang telah dibuat dan berisi data berikut:

c1        
----------
0         
1         
1         
-1        
0.0       
73.45     
73.45     
-73.45    
0.246     
-3400000.0
0.012     
12000.0   
Ten       
5 Dollars 

SQLite menggunakan sistem tipe dinamis, di mana tipe data dari suatu nilai dikaitkan dengan nilai itu sendiri, bukan kolom (seperti kebanyakan RDBMS lainnya). Saat saya membuat tabel, saya tidak menentukan tipe data. Oleh karena itu, nilainya dapat berupa jenis apa pun.

The Typeof() Fungsi

Kita dapat menggunakan fungsi typeof() SQLite untuk memfilter hasil menjadi tipe numerik saja (real dan integer ):

SELECT c1
FROM t1
WHERE typeof(c1) = 'real'
OR typeof(c1) = 'integer';

Hasil:

c1        
----------
0         
1         
1         
-1        
0.0       
73.45     
73.45     
-73.45    
0.246     
-3400000.0
0.012     
12000.0   

Untuk memperjelas, berikut adalah contoh yang menampilkan tipe data untuk setiap baris:

SELECT 
    c1,
    typeof(c1)
FROM t1;

Hasil:

c1          typeof(c1)
----------  ----------
0           integer   
1           integer   
1           integer   
-1          integer   
0.0         real      
73.45       real      
73.45       real      
-73.45      real      
0.246       real      
-3400000.0  real      
0.012       real      
12000.0     real      
Ten         text      
5 Dollars   text      

REGEXP Fungsi

Jika kami memiliki persyaratan yang lebih spesifik, kami juga dapat menggunakan REGEXP untuk meneruskan ekspresi reguler untuk mengembalikan hanya nilai-nilai yang cocok dengan pola yang diberikan.

Contoh:

SELECT c1
FROM t1 
WHERE c1 REGEXP '^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$';

Hasil:

c1        
----------
0         
1         
1         
-1        
0.0       
73.45     
73.45     
-73.45    
0.246     
-3400000.0
0.012     
12000.0   

Kembalikan Bilangan Bulat

Jika kita hanya ingin mengembalikan bilangan bulat, kita dapat menyederhanakan query sebagai berikut:

SELECT c1
FROM t1
WHERE typeof(c1) = 'integer';

Hasil:

c1
--
0 
1 
1 
-1

Ini juga mengembalikan bilangan bulat yang ditandatangani.

Atau kita bisa menggunakan ekspresi reguler jika persyaratan kita lebih spesifik:

SELECT c1
FROM t1 
WHERE c1 REGEXP '^[0-9]+$';

Hasil:

c1
--
0 
1 
1 

Berisi Data Numerik

Jika kita ingin mencari baris yang berisi data numerik (walaupun baris tersebut juga berisi data non-numerik), kita dapat melakukan hal berikut:

SELECT c1 
FROM t1 
WHERE c1 REGEXP '[0-9]+';

Hasil:

c1        
----------
0         
1         
1         
-1        
0.0       
73.45     
73.45     
-73.45    
0.246     
-3400000.0
0.012     
12000.0   
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. Bagaimana iif() Bekerja di SQLite

  2. Contoh Database SQLite

  3. 2 Cara Membuat Daftar Tabel dalam Database SQLite

  4. Pengecualian SQLite saat mencoba menghapus baris

  5. Sqlite Android Raw Query INSERT INTO Tidak Berfungsi