PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Kembalikan Nilai Non-Numerik dari Kolom Database PostgreSQL

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

Contoh Data

Mari kita buat tabel dengan contoh data:

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

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'),
    ('a'),
    ('9afc'),
    ('e7'),
    ('+e0'),
    ('Ten'),
    ('5 Dollars');

SELECT * FROM t1; 

Tabel sekarang telah dibuat dan berisi data berikut:

 c1 ----------- 0 1 +1 -1 00.00 73.45 +73.45 -73.45 .246 -.34e7 12.e-3 1.2e+4 a 9afc e7 +e0 Sepuluh 5 Dolar 

Kolomnya adalah varchar(255) kolom, jadi bukan numerik. Itu dapat (dan memang) berisi angka tetapi ini disimpan sebagai data karakter. Itu juga dapat berisi teks arbitrer (yang memang benar).

Mengembalikan Nilai Non-Numerik

Kita dapat menggunakan kueri berikut untuk mengembalikan nilai non-numerik dari tabel di atas:

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

Hasil:

 c1 ----------- 12.e-3 a 9afc e7 +e0 Sepuluh 5 Dolar

Mengembalikan Non-Bilangan Bulat

Jika kita hanya ingin mengembalikan non-bilangan bulat, kuerinya bisa jauh lebih sederhana:

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

Hasil:

 c1 ----------- +1 -1 00.00 73.45 +73.45 -73.45 .246 -.34e7 12.e-3 1.2e+4 a 9afc e7 +e0 Sepuluh 5 Dolar

Tidak Mengandung Data Numerik

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

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

Hasil:

 c1 ----- a Sepuluh

Di PostgreSQL, !~ adalah operator peka huruf besar/kecil yang digunakan untuk mengembalikan nilai yang tidak cocok dengan ekspresi reguler yang diberikan. Untuk kecocokan yang tidak peka huruf besar/kecil, gunakan !~* .

Anda dapat menggunakan ~ untuk mengembalikan semua baris yang lakukan cocok dengan ekspresi reguler (dan ~* untuk kecocokan yang tidak peka huruf besar/kecil).


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jalankan kueri dengan LIMIT/OFFSET dan dapatkan juga jumlah total baris

  2. Setel ulang penghitung kenaikan otomatis di postgres

  3. Bagaimana Width_Bucket() Bekerja di PostgreSQL

  4. Ekstrak Bulan dari Tanggal di PostgreSQL

  5. Setel ulang nilai urutan sebagai 1