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 DolarKolomnya 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 DolarMengembalikan 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 DolarTidak 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 SepuluhDi 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).