Jasně, je to proveditelné. Myšlenka je taková, že vypočítáme masku podsítě nastavením nejvýznamnějších bitů na 1, tedy tolik, kolik určuje třída podsítě. Pro třídu C by to bylo
SELECT -1 << 8;
Potom A masku podsítě s IP adresou, kterou máte; pokud je IP uvnitř podsítě, výsledek by se měl rovnat adrese podsítě -- standardní síťové věci. Takže skončíme s:
SELECT (-1 << 8) & INET_ATON("192.168.0.1") = INET_ATON("192.168.0.0");
Aktualizace: Ano, je nutné znát třídu sítě nebo masku podsítě (což je ekvivalentní informace). Zvažte, jak byste mohli zvládnout případ, kdy je podsíť X.Y.0.0
pokud jste tyto informace neměli. Je toto X.Y.0.0/16
? nebo X.Y.0.0/8
kde se třetí oktet prostě stane být 0? Nedá se to zjistit.
Pokud znáte masku podsítě, může být dotaz zapsán 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");