確かに、それは実行可能です。サブネットマスクは、サブネットクラスで指定された数の最上位ビットを1に設定して計算するという考え方です。クラスCの場合、それは
SELECT -1 << 8;
次に、サブネットマスクと現在のIPアドレスをANDします。 IPがサブネット内にある場合、結果はサブネットアドレス(標準のネットワーク関連のもの)と等しくなるはずです。したがって、最終的には次のようになります。
SELECT (-1 << 8) & INET_ATON("192.168.0.1") = INET_ATON("192.168.0.0");
更新: はい、ネットワーククラスを知っている必要がありますまたは サブネットマスク(同等の情報)。サブネットがX.Y.0.0
の場合をどのように処理できるかを検討してください。 この情報がなかった場合。これはX.Y.0.0/16
ですか またはX.Y.0.0/8
3番目のオクテットがちょうど起こる 0になる?知る方法はありません。
サブネットマスクがわかっている場合は、クエリを次のように記述できます
SELECT (-1 << (33 - INSTR(BIN(INET_ATON("255.255.255.0")), "0"))) &
INET_ATON("192.168.0.1") = INET_ATON("192.168.0.0");