Jasne, to wykonalne. Pomysł polega na tym, że obliczamy maskę podsieci, ustawiając najbardziej znaczące bity na 1, tyle, ile podyktuje klasa podsieci. Dla klasy C byłoby to
SELECT -1 << 8;
Następnie ORAZ maska podsieci z adresem IP, który posiadasz; jeśli adres IP znajduje się w podsieci, wynik powinien być równy adresowi podsieci – standardowe elementy sieciowe. W efekcie otrzymujemy:
SELECT (-1 << 8) & INET_ATON("192.168.0.1") = INET_ATON("192.168.0.0");
Aktualizacja: Tak, konieczna jest znajomość klasy sieci lub maska podsieci (która jest równoważną informacją). Zastanów się, jak poradzić sobie z przypadkiem, w którym podsieć to X.Y.0.0
jeśli nie masz tych informacji. Czy to jest X.Y.0.0/16
? lub X.Y.0.0/8
gdzie trzeci oktet po prostu się dzieje być 0? Nie ma sposobu, aby się dowiedzieć.
Jeśli znasz maskę podsieci, zapytanie można zapisać jako
SELECT (-1 << (33 - INSTR(BIN(INET_ATON("255.255.255.0")), "0"))) &
INET_ATON("192.168.0.1") = INET_ATON("192.168.0.0");