Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Kiểm tra xem IP có trong mạng con không

Chắc chắn, nó có thể làm được. Ý tưởng là chúng ta tính toán mặt nạ mạng con bằng cách đặt các bit quan trọng nhất thành 1, nhiều nhất được quy định bởi lớp mạng con. Đối với lớp C, đó sẽ là

SELECT -1 << 8;

Sau đó, VÀ mặt nạ mạng con với địa chỉ IP bạn có; nếu IP nằm bên trong mạng con, kết quả sẽ bằng với địa chỉ mạng con - nội dung mạng tiêu chuẩn. Vì vậy, chúng tôi kết thúc với:

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

Cập nhật: Có, cần phải biết lớp mạng hoặc mặt nạ mạng con (là thông tin tương đương). Hãy xem xét cách bạn có thể xử lý trường hợp mạng con là X.Y.0.0 nếu bạn không có thông tin này. Đây có phải là X.Y.0.0/16 không hoặc X.Y.0.0/8 nơi bát phân thứ ba vừa xảy ra là 0? Không có cách nào để biết.

Nếu bạn biết mặt nạ mạng con, thì truy vấn có thể được viết là

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. kiểm tra tính khả dụng của một phòng bằng SQL

  2. EXPLAIN và COUNT trả về hai giá trị khác nhau

  3. Cách truy cập các phần tử mảng

  4. com.mysql.jdbc.MysqlDataTruncation:Cắt bớt dữ liệu:Dữ liệu quá dài cho cột 'column_name'

  5. So sánh phạm vi ngày