MariaDB
 sql >> Teknologi Basis Data >  >> RDS >> MariaDB

Temukan Semua Nilai Non-Numerik dalam Kolom di MariaDB

Jika Anda pernah menemukan kolom karakter yang seharusnya berupa kolom numerik, selalu ada kemungkinan kolom tersebut berisi data non-numerik yang tidak Anda ketahui.

Di MariaDB, Anda dapat menjalankan kueri seperti berikut untuk mengembalikan data non-numerik dari kolom.

Contoh Data

Misalkan kita membuat tabel seperti ini:

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;

SELECT . itu pernyataan di akhir menghasilkan ini:

+-----------+
| 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       |
| Ten       |
| 5 Dollars |
+-----------+

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).

Kembalikan Semua Nilai Non-Numerik

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

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

Hasil:

+-----------+
| c1        |
+-----------+
| 12.e-3    |
| a         |
| 9afc      |
| Ten       |
| 5 Dollars |
+-----------+

Mengembalikan Non-Bilangan Bulat

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

SELECT c1
FROM t1 
WHERE c1 NOT REGEXP '^[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       |
| Ten       |
| 5 Dollars |
+-----------+

Tidak Mengandung Data Numerik

Jika kita hanya 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   |
+------+
| a    |
| Ten  |
+------+

Kita dapat menggunakan kelas POSIX untuk mendapatkan hasil yang sama:

SELECT c1
FROM t1 
WHERE c1 NOT REGEXP '[[:digit:]]';

Hasil:

+------+
| c1   |
+------+
| a    |
| 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. Rilis AX MariaDB Baru Menampilkan MariaDB ColumnStore 1.1.3 GA

  2. Kiat Manajemen Skema untuk MySQL &MariaDB

  3. Otomasi Basis Data dengan Wayang:Menerapkan MySQL &MariaDB Galera Cluster

  4. Bagaimana WEEKDAY() Bekerja di MariaDB

  5. Bagaimana UNCOMPRESSED_LENGTH() Bekerja di MariaDB