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

2 Cara Mengembalikan Nilai Non-Numerik di SQLite

Contoh SQLite berikut hanya mengembalikan baris yang memiliki nilai non-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 mengecualikan tipe numerik (real dan integer ) agar tidak dikembalikan dalam kueri:

SELECT c1
FROM t1
WHERE typeof(c1) <> 'real'
AND typeof(c1) <> 'integer';

Hasil:

c1       
---------
Ten      
5 Dollars

Berikut contoh lain 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      

Ini menunjukkan kepada kita bahwa hanya dua baris terakhir yang berisi data non-numerik (mereka berisi text data).

REGEXP Fungsi

Pilihan lain adalah menggunakan REGEXP untuk meneruskan ekspresi reguler untuk mengembalikan hanya nilai-nilai yang cocok dengan pola yang diberikan.

Contoh:

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

Hasil:

c1       
---------
Ten      
5 Dollars

Mengembalikan Non-Bilangan Bulat

Jika kita hanya ingin mengembalikan non-bilangan bulat, kita dapat melakukan hal berikut:

SELECT c1
FROM t1
WHERE typeof(c1) <> 'integer';

Hasil:

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

Ini juga mengecualikan bilangan bulat yang ditandatangani.

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

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

Hasil:

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

Tidak Mengandung Data Numerik

Jika kita ingin menemukan baris yang tidak berisi data numerik, kita dapat melakukan hal berikut:

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

Hasil:

c1 
---
Ten

  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 SQLite Nullif() Bekerja

  2. Memasukkan tanggal dan waktu saat ini dalam database SQLite

  3. Pengembangan Database MultiTable SQLite Android

  4. 2 Cara Mengaktifkan Bungkus Kata di SQLite

  5. Bagaimana cara mengambil tanggal mms dari content://mms.