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

Kembalikan Hanya Nilai Numerik di MariaDB

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

Contoh-contoh ini menggunakan REGEXP berfungsi untuk mengembalikan nilai yang cocok dengan pola yang ditentukan.

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;

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       |
| 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 Numerik

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

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

Hasil:

+--------+
| c1     |
+--------+
| 0      |
| 1      |
| +1     |
| -1     |
| 00.00  |
| 73.45  |
| +73.45 |
| -73.45 |
| .246   |
| -.34e7 |
| 1.2e+4 |
| e7     |
| +e0    |
+--------+

Kembalikan Bilangan Bulat

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

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

Hasil:

+------+
| c1   |
+------+
| 0    |
| 1    |
+------+

Berisi Data Numerik

Jika kita ingin mencari baris yang hanya berisi data numerik (meskipun 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        |
| 00.00     |
| 73.45     |
| +73.45    |
| -73.45    |
| .246      |
| -.34e7    |
| 12.e-3    |
| 1.2e+4    |
| 9afc      |
| e7        |
| +e0       |
| 5 Dollars |
+-----------+

Kelas Karakter POSIX

MariaDB mendukung kelas karakter POSIX, yang berarti kita dapat menggunakan [:digit:] bukannya [0-9] dalam ekspresi reguler kami.

Contoh:

SELECT c1
FROM t1 
WHERE c1 REGEXP '^[[:digit:]]?$';

Hasil:

+------+
| c1   |
+------+
| 0    |
| 1    |
+------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Atur Set Karakter dan Susunan Kolom di MariaDB

  2. Caching Kueri MySQL &MariaDB Dengan ProxySQL &ClusterControl

  3. Menjalankan Vitess dan MySQL dengan ClusterControl

  4. Cara Mengurangi Tahun dari Tanggal di MariaDB

  5. Cara Menghasilkan Integer Acak Dalam Rentang di MariaDB