Claro, é factível. A ideia é que calculemos a máscara de sub-rede definindo os bits mais significativos para 1, tantos quantos forem ditados pela classe de sub-rede. Para uma classe C, isso seria
SELECT -1 << 8;
Em seguida, E a máscara de sub-rede com o endereço IP que você possui; se o IP estiver dentro da sub-rede, o resultado deve ser igual ao endereço da sub-rede -- material de rede padrão. Assim terminamos com:
SELECT (-1 << 8) & INET_ATON("192.168.0.1") = INET_ATON("192.168.0.0");
Atualização: Sim, é necessário conhecer a classe de rede ou a máscara de sub-rede (que é informação equivalente). Considere como você poderia lidar com o caso em que a sub-rede é
X.Y.0.0
se você não tiver essa informação. Este é X.Y.0.0/16
ou X.Y.0.0/8
onde o terceiro octeto simplesmente acontece ser 0? Não há como saber. Se você conhece a máscara de sub-rede, a consulta pode ser escrita como
SELECT (-1 << (33 - INSTR(BIN(INET_ATON("255.255.255.0")), "0"))) &
INET_ATON("192.168.0.1") = INET_ATON("192.168.0.0");