Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Bagaimana cara mencocokkan alamat ip di mysql?

Anda harus menggunakan REGEXP untuk mencocokkan alamat IP dengan pola kotak bertitik.

SELECT *
FROM yourtable
WHERE 
  thecolumn REGEXP '^[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}$'

Secara teknis, ini akan cocok dengan nilai yang bukan alamat IP yang valid, seperti 999.999.999.999 , tapi itu mungkin tidak penting. Apa itu penting, adalah memperbaiki data Anda sedemikian rupa sehingga alamat IP disimpan di kolomnya sendiri terpisah dari data lain apa pun yang Anda miliki di sini. Hampir selalu merupakan ide yang buruk untuk mencampur tipe data dalam satu kolom.

mysql> SELECT '9876543210' REGEXP '^[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}$';
+---------------------------------------------------------------------------+
| '9876543210' REGEXP '^[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}$' |
+---------------------------------------------------------------------------+
|                                                                         0 |
+---------------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT '987.654.321.0' REGEXP '^[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}$';
+------------------------------------------------------------------------------+
| '987.654.321.0' REGEXP '^[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}$' |
+------------------------------------------------------------------------------+
|                                                                            1 |
+------------------------------------------------------------------------------+

Metode lain adalah mencoba mengonversi alamat IP ke bilangan bulat panjang melalui INET_ATON() fungsi . Alamat yang tidak valid akan mengembalikan NULL .

Metode ini kemungkinan akan lebih efisien daripada ekspresi reguler.

Anda dapat menyematkannya di WHERE kondisi seperti:WHERE INET_ATON(thecolumn) IS NOT NULL

SELECT INET_ATON('127.0.0.1');
+------------------------+
| INET_ATON('127.0.0.1') |
+------------------------+
|             2130706433 |
+------------------------+

SELECT INET_ATON('notes');
+--------------------+
| INET_ATON('notes') |
+--------------------+
|               NULL |
+--------------------+

SELECT INET_ATON('56.99.9999.44');
+----------------------------+
| INET_ATON('56.99.9999.44') |
+----------------------------+
|                       NULL |
+----------------------------+


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PILIH * DARI beberapa tabel. MySQL

  2. Dua sisipan di PHP/MySQL menggunakan LAST_INSERT_ID() dan baris dari tabel lain

  3. tidak dapat masuk di instance sql penyimpanan cloud google

  4. Pemicu MySQL tidak dapat memperbarui baris dalam tabel yang sama dengan pemicu yang ditetapkan. Solusi yang disarankan?

  5. hapus informasi dari tabel mysql saat pengguna menutup Browsernya