Selvfølgelig kan det lade sig gøre. Ideen er, at vi beregner undernetmasken ved at sætte de mest signifikante bits til 1, så mange som dikteret af undernetklassen. For en klasse C ville det være
SELECT -1 << 8;
Derefter OG undernetmasken med den IP-adresse du har; hvis IP'en er inde i undernettet, bør resultatet være lig med undernetadressen -- standard netværksting. Så vi ender med:
SELECT (-1 << 8) & INET_ATON("192.168.0.1") = INET_ATON("192.168.0.0");
Opdatering: Ja, det er nødvendigt at kende netværksklassen eller undernetmasken (som er tilsvarende information). Overvej, hvordan du kunne håndtere tilfældet, hvor undernettet er X.Y.0.0
hvis du ikke havde disse oplysninger. Er dette X.Y.0.0/16
eller X.Y.0.0/8
hvor den tredje oktet bare sker at være 0? Ingen måde at vide det.
Hvis du kender undernetmasken, kan forespørgslen skrives som
SELECT (-1 << (33 - INSTR(BIN(INET_ATON("255.255.255.0")), "0"))) &
INET_ATON("192.168.0.1") = INET_ATON("192.168.0.0");