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

Periksa apakah IP ada di subnet

Tentu, itu bisa dilakukan. Idenya adalah kita menghitung subnet mask dengan menyetel bit paling signifikan ke 1, sebanyak yang ditentukan oleh kelas subnet. Untuk kelas C, itu adalah

SELECT -1 << 8;

Kemudian, DAN subnet mask dengan alamat IP yang Anda miliki; jika IP berada di dalam subnet, hasilnya harus sama dengan alamat subnet -- standar jaringan. Jadi kita berakhir dengan:

SELECT (-1 << 8) & INET_ATON("192.168.0.1") = INET_ATON("192.168.0.0");

Pembaruan: Ya, perlu untuk mengetahui kelas jaringan atau subnet mask (yang merupakan informasi yang setara). Pertimbangkan bagaimana Anda bisa menangani kasus di mana subnetnya adalah X.Y.0.0 jika Anda tidak memiliki informasi ini. Apakah ini X.Y.0.0/16 atau X.Y.0.0/8 di mana oktet ketiga terjadi begitu saja menjadi 0? Tidak ada cara untuk mengetahuinya.

Jika Anda mengetahui subnet mask, maka kuerinya dapat ditulis sebagai

SELECT (-1 << (33 - INSTR(BIN(INET_ATON("255.255.255.0")), "0"))) &
       INET_ATON("192.168.0.1") = INET_ATON("192.168.0.0");


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menyimpan data sesi PHP ke database alih-alih di sistem file?

  2. Di mana lokasi mysql client .my.cnf di XAMPP untuk Windows?

  3. mencocokkan nama tabel dengan tabel acara

  4. Bagaimana cara menampilkan data dari mysql menggunakan angular.js PHP?

  5. Jumlah kolom dalam menggunakan mysqli dan php